android listview的多列模版实例代码

android listview多列模版

在listview中,可以做出多列模版的效果,关键还是在listview的模版本,比如如下:

<LinearLayout
  android:id="@+id/relativeLayout1"
  android:layout_height="fill_parent"
  android:layout_width="fill_parent"
  xmlns:android="http://schemas.android.com/apk/res/android"> 

  <TextView
    android:id="@+id/FirstText"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="First"
    android:layout_weight="1">
  </TextView> 

  <TextView
    android:id="@+id/SecondText"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="Second"
    android:layout_weight="2">
  </TextView> 

  <TextView
    android:id="@+id/ThirdText"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="Third"
    android:layout_weight="1">
  </TextView> 

  <TextView
    android:id="@+id/FourthText"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="Fourth"
    android:layout_weight="1">
  </TextView>
</LinearLayout>

listviewadapter.java:

public class listviewAdapter extends BaseAdapter
{
  public ArrayList<HashMap<String,String>> list;
  Activity activity; 

  public listviewAdapter(Activity activity, ArrayList<HashMap<String,String>> list) {
    super();
    this.activity = activity;
    this.list = list;
  } 

  public int getCount() {
    // TODO Auto-generated method stub
    return list.size();
  } 

  public Object getItem(int position) {
    // TODO Auto-generated method stub
    return list.get(position);
  } 

  public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 0;
  } 

  private class ViewHolder {
      TextView txtFirst;
      TextView txtSecond;
      TextView txtThird;
      TextView txtFourth;
   } 

  public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub 

    // TODO Auto-generated method stub
        ViewHolder holder;
        LayoutInflater inflater = activity.getLayoutInflater(); 

        if (convertView == null)
        {
          convertView = inflater.inflate(R.layout.listview_row, null);
          holder = new ViewHolder();
          holder.txtFirst = (TextView) convertView.findViewById(R.id.FirstText);
          holder.txtSecond = (TextView) convertView.findViewById(R.id.SecondText);
          holder.txtThird = (TextView) convertView.findViewById(R.id.ThirdText);
          holder.txtFourth = (TextView) convertView.findViewById(R.id.FourthText);
          convertView.setTag(holder);
        }
        else
        {
          holder = (ViewHolder) convertView.getTag();
        } 

        HashMap<String, String> map = list.get(position);
        holder.txtFirst.setText(map.get(FIRST_COLUMN));
        holder.txtSecond.setText(map.get(SECOND_COLUMN));
        holder.txtThird.setText(map.get(THIRD_COLUMN));
        holder.txtFourth.setText(map.get(FOURTH_COLUMN)); 

      return convertView;
  }

主程序:

public class MultiColumnActivity extends Activity
{
  private ArrayList<HashMap<String,String>> list; 

  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 

    ListView lview = (ListView) findViewById(R.id.listview);
    populateList();
    listviewAdapter adapter = new listviewAdapter(this, list);
    lview.setAdapter(adapter);
  }   

  private void populateList() { 

    list = new ArrayList<HashMap<String,String>>(); 

    HashMap<String,String> temp = new HashMap<String,String>();
      temp.put(FIRST_COLUMN,"Colored Notebooks");
      temp.put(SECOND_COLUMN, "By NavNeet");
      temp.put(THIRD_COLUMN, "Rs. 200");
      temp.put(FOURTH_COLUMN, "Per Unit");
    list.add(temp); 

    HashMap<String,String> temp1 = new HashMap<String,String>();
      temp1.put(FIRST_COLUMN,"Diaries");
      temp1.put(SECOND_COLUMN, "By Amee Products");
      temp1.put(THIRD_COLUMN, "Rs. 400");
      temp1.put(FOURTH_COLUMN, "Per Unit");
    list.add(temp1); 

    HashMap<String,String> temp2 = new HashMap<String,String>();
      temp2.put(FIRST_COLUMN,"Note Books and Stationery");
      temp2.put(SECOND_COLUMN, "By National Products");
      temp2.put(THIRD_COLUMN, "Rs. 600");
      temp2.put(FOURTH_COLUMN, "Per Unit");
    list.add(temp2); 

    HashMap<String,String> temp3 = new HashMap<String,String>();
      temp3.put(FIRST_COLUMN,"Corporate Diaries");
      temp3.put(SECOND_COLUMN, "By Devarsh Prakashan");
      temp3.put(THIRD_COLUMN, "Rs. 800");
      temp3.put(FOURTH_COLUMN, "Per Unit");
    list.add(temp3); 

    HashMap<String,String> temp4 = new HashMap<String,String>();
      temp4.put(FIRST_COLUMN,"Writing Pad");
      temp4.put(SECOND_COLUMN, "By TechnoTalaktive Pvt. Ltd.");
      temp4.put(THIRD_COLUMN, "Rs. 100");
      temp4.put(FOURTH_COLUMN, "Per Unit");
    list.add(temp4);
  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • iOS 水波纹动画的实现效果

    本人最近在研究iOS动画,至于原理,我不在这里说了.毕竟这里的标题:水波纹的实现. 在这里,要学习水波纹的实现,首先要知道以下几点知识: 1.正弦函数:y = Asin(wx +b) + c.相信大家都比较熟悉. 2.CAShapeLayer的简单实用,相信看一下,就是知道其大概的用途了,形状Layer层.和用户显示图形的Layer,继承于layer,好了,废话不多说,直接上图吧. 上面的知识点,我会以代码的方式,梳理上面的知识点,不过首先我还是上传效果图吧,有图有真相,才是事实嘛. 1.效果图

  • Android ListView 子控件onClick正确获取position的方法

    在实际开发中,我们有时候不仅需要响应ListView的onItemClick,还需要响应其子控件的点击事件,这个时候我们就会 发现,由于复用等原因,如果直接在子控件的onClick事件中调用getView()中的position,会出现数据或显示错位的问 题,原因就是position的值出现了重复或不准确,解决这个问题的方法是,在adapter每次加载数据的时候,为需要点击 的控件设置一个tag值,这个tag值就设置为当前这个控件对应的position,然后在点击事件中gettag(),获取这个

  • android监听软键盘的弹出与隐藏的示例代码

    情境:布局文件中有ScrollView,ScrollView中有个EditView,布局底部有一个控件(见下面布局代码),程序一启动EditView就获取焦点,弹出软键盘,将这个底部的控件也顶上去了,感觉不太好,所以我就想监听下软键盘弹出,此时去隐藏底部控件,软键盘隐藏时则显示底部控件. 初始:       <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@

  • android利用ContentResolver访问者获取手机联系人信息

    利用ContentResolver内容访问者,获取手机联系人信息我做了两种不同的做法.第一种,直接获取所有手机联系人信息,展示在ListView中.第二种,通过Butten按钮跳转到系统的手机联系人界面,单个获取手机联系人信息,展示在ListView中,结果如下: 第一种: 第二种: 第一种:直接获取所有手机联系人信息 首先需要在AndroidManifest.xml文件中添加权限: <uses-permission android:name="android.permission.REA

  • Android使用百度语音识别的示例代码

    本文使用百度语音识别,完成语音识别的功能,使用百度语音识别,先要申请APP ID,这个直接到百度网站上有说明文档,本文不再赘述.申请之后,下载SDK包,按照百度官网要求,合并libs和res两个目录到项目中,然后在build.gradle(module:app)中的Android{...}下添加 sourceSets{ main{ jniLibs.srcDirs=['libs'] } } 这样, 百度语音识别的so文件才能正常使用. Manifest文件中添加权限 <uses-permissio

  • Android中ListView + CheckBox实现单选、多选效果

    还是先来看看是不是你想要的效果: 不废话,直接上代码,很简单,代码里都有注释 1 单选 public class SingleActivity extends AppCompatActivity { private ListView listView; private ArrayList<String> groups; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInsta

  • Android ListView 和ScroolView 出现onmeasure空指针的解决办法

    ListView 和ScroolView同时使用计算高度时onmeasure报空指针的解决办法 前言: 虽然Android 的设计者始终认为ListView.GridView+ScroolView组合使用并不是一种比较好的实现方法.但是在我们开发过程中又会经常使用到这样的需求,特别是在适配小屏幕手机的时候又必须要用这种让人不接受的设计,下面就来说一下在计算ListView或者GridView的过程中会出现onmeasure空指针的问题. 解决办法 当我发现listItem.measure(0,0

  • Android编程实现EditText字数监听并显示的方法

    本文实例讲述了Android编程实现EditText字数监听并显示的方法.分享给大家供大家参考,具体如下: 在开发应用的时候,经常会限制用户输入的字数,比如发表评论或者其它什么的,下面来个简单的demo EditText et_content;//定义一个文本输入框 TextView tv_num;// 用来显示剩余字数 int num = 10;//限制的最大字数 et_content = (EditText) findViewById(R.id.et_content); tv_num = (

  • Android listview ExpandableListView实现多选,单选,全选,edittext实现批量输入的实例代码

    最近在项目开发中,由于项目的需求要实现一些列表的单选,多选,全选,批量输入之类的功能,其实功能的实现倒不是很复杂,需求中也没有涉及到复杂的动画什么之类,主要是解决列表数据复用的问题,解决好这个就可以了.下面是最近项目中涉及到的一些: listview实现多选.全选.取消全选: 下面是适配器,一开始在适配器的构造函数中,对数据进行初始化,同时定义一个集合用于管理listview的点击: class BatchAdpter extends BaseAdapter { private HashMap<

  • Android编程实现TextView垂直自动滚动功能【附demo源码下载】

    本文实例讲述了Android编程实现TextView垂直自动滚动功能.分享给大家供大家参考,具体如下: 在做android 应用的开发的时候,横向滚动或者要做出跑马灯的效果很简单,textview本身的属性就支持,只要设置准确就会滚动,开发起来比较简单,但是textview 不支持垂直滚动,那么垂直滚动就需要自己来实现了,很多网友提供的垂直滚 动方案都是千篇一律,使用ScrollView来进行滚动,但是都不完美,做起来有些别扭.有一位网友给出的歌词的滚动思路明确,能从根本上解决问题,因此我实现的

  • Android 自定义可拖拽View界面渲染刷新后不会自动回到起始位置

    以自定义ImageView为例: /** * 可拖拽ImageView * Created by admin on 2017/2/21. */ public class FloatingImageView extends ImageView{ public FloatingImageView(Context context) { super(context); } public FloatingImageView(Context context, AttributeSet attrs) { su

随机推荐