• 自定义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里面找到控件进行处理就好了,整体的思路都是一样的。

    
    
  • 相关阅读:
    [leetcode.com]算法题目
    [leetcode.com]算法题目
    [leetcode.com]算法题目
    [实战演练]2014年人人公司应届生校招技术笔试题
    [杂谈]笔试中一些数字逻辑推理(非技术)
    [实战演练]腾讯2013年校招软件开发类笔试题目(选择题部分)
    [实战演练]史上最长最醒目的队名
    [Linux]在linux中,常常用到ctrl和其他按键组合,常用的有哪些及意义呢
    [linux] grep awk sort uniq学习
    [IDEA] 快捷键学习
  • 原文地址:https://www.cnblogs.com/wzben/p/5057409.html
Copyright © 2020-2023  润新知