自定義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里面找到控件進行處理就好了,整體的思路都是一樣的。

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM