日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android ListView重写Adapter

發布時間:2025/3/20 Android 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android ListView重写Adapter 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在很多項目中都會用到ListView,但基本都需要進行重寫Adapter,但每次都是會找好半天,寫在這兒方便以后copy~~
xml定義一個ListView:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:background="#ffffff" android:padding="5dip" > </ListView> </LinearLayout>

重寫Adapter:

public class SmsMmsAdapter extends BaseAdapter { private LayoutInflater mInflater; private Context mContext; private MessageBase mMessageBase; private MessageMms mMessageMms; private MessageSms mMessageSms; private ViewHolder mViewHolder; public SmsMmsAdapter(Context pContext) { mContext = pContext; mInflater = LayoutInflater.from(pContext); mMessageBase = new MessageBase(); mMessageMms = new MessageMms(); mMessageSms = new MessageSms(); } @Override public int getCount() { // TODO Auto-generated method stub return mMessageList.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub mMessageBase = mMessageList.get(position); if (convertView == null) { mViewHolder = new ViewHolder(); convertView = mInflater.inflate(R.layout.list_say_he_item, parent, false); } else { if (convertView.getId() != R.id.mListSayHeItem) { convertView = mInflater.inflate( R.layout.list_say_he_item, parent, false); mViewHolder = new ViewHolder(); } else { mViewHolder = (ViewHolder) convertView.getTag(); } } mMessageBase = mMessageList.get(position); mViewHolder.mBody = (TextView) convertView .findViewById(R.id.mMmsContent); mViewHolder.mMmsBitmap = (ImageView) convertView.findViewById(R.id.mMmsBitmap); mViewHolder.mMmsSubject = (TextView) convertView.findViewById(R.id.mMmsSubject); mViewHolder.mMmsSendTime = (TextView) convertView.findViewById(R.id.mMmsSendTime); convertView.setTag(mViewHolder); return convertView; } public final class ViewHolder { public TextView mBody; public ImageView mMmsBitmap; public TextView mMmsSubject; public TextView mMmsSendTime; } }

其中ListView的大小是由mMessageList的大小來決定的,convertView通過setTag和getTag方法來實現重用機制,在重用的過程中,通過convertView.getId來和期望的布局Id進行比較,如果是則進行重用,如果不是則重新從布局中讀取,這個方法只適合在ListView中的每個Item并不是完全一樣,比如第一行和別的不一樣,mListSayHeItem是list_say_he_item中最外外邊的那個布局Id.

總結

以上是生活随笔為你收集整理的Android ListView重写Adapter的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。