zoukankan      html  css  js  c++  java
  • 自定义ListView里面的Item的内容

    我们不可能满足只是往每个item里面填字就足够,像QQ的好友列表就是一个ListView,每个Item里面有头像、名字啊、签名什么的,内容丰富。那我们要怎么定义一个内容丰富的item呢?

    要用到Adapter啦!构造每一个ListView都要有一个Adapter,只要这个Adapter弄好了,每个Item也就弄好啦!

    让我们来看看构造一个ListView的普遍方法!

    Adapter adpter = new MyAdapter(content,LayoutID,T[]);
    
    listView.setAdapter(adpter);
    
    
    //首先要构造一个适配器Adapter,content是当前的上下文,LayoutID就是传入的布局文件,可以通过R.layout.xx找到,这个布局文件,可以用作item的布局文件。就是说item的布局就是这个布局文件里面的布局,我们可以通过这个布局来设置我们item的布局,T[]是一个数组,可以往item里面填数据的。

    一个实例,要每个item里面都有一个TextView。

    自定义一个Adapter:

      

    public class MyAdapter extends ArrayAdapter<String> {
    
        //传进来的布局文件ID
        private int resouceID;
    
        Context context;
    
       
        public MyAdapter(Context context, int textViewResourceId, String[] objects) {
            super(context,textViewResourceId, objects);
    
            resouceID = textViewResourceId;
            
            this.context = context;
        }
    
       
    
    
       //这个函数很重要,是绘制每个Item的时候调用的,返回的View用来构造item
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
    
        
        //这一步其实我自己都有点难理解,就是获取到了传进去的那个T[]数组的T[position]
        String city = (String)getItem(position);
    
         //每个Item是一个view
            View  view;
    
        //给view设置布局,就是我们传进来的那个布局,这样设置之后,每个item就是我设置的布局文件的布局了
            view = LayoutInflater.from(getContext()).inflate(resouceID,null);
    
        //找到布局中的TextView
            TextView cityname = (TextView)view.findViewById(R.id.itemtext);
    
        
            cityname.setText(city);
        
        //返回View用来构造item
        return view;
    
        }
    }

    自定义的布局文件:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
        android:layout_height="match_parent"
    
    
        >
    
    
    <TextView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/itemtext"
            android:gravity="center"
            android:textSize="40dp"
    
            />
    
    
    
    
    </RelativeLayout>

    在onCreate里面里面设置ListView:

    Adapter adpter = new MyAdapter(content,LayoutID,T[]);
    
    listView.setAdapter(adpter);

    整个代码比较简洁,也比较简单,只是简述了一般的思路。这个例子中只是把item里面弄个TextView,像复杂的Item只要在布局文件里多弄控件,然后在Adapter里面找到控件进行处理就好了,整体的思路都是一样的。

    
    
  • 相关阅读:
    2、容器初探
    3、二叉树:先序,中序,后序循环遍历详解
    Hebbian Learning Rule
    论文笔记 Weakly-Supervised Spatial Context Networks
    在Caffe添加Python layer详细步骤
    论文笔记 Learning to Compare Image Patches via Convolutional Neural Networks
    Deconvolution 反卷积理解
    论文笔记 Feature Pyramid Networks for Object Detection
    Caffe2 初识
    论文笔记 Densely Connected Convolutional Networks
  • 原文地址:https://www.cnblogs.com/wzben/p/5057409.html
Copyright © 2011-2022 走看看