Android ListView重写Adapter
生活随笔
收集整理的這篇文章主要介紹了
Android ListView重写Adapter
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在很多項目中都會用到ListView,但基本都需要進行重寫Adapter,但每次都是會找好半天,寫在這兒方便以后copy~~
xml定義一個ListView:
重寫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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Hander机制的理解
- 下一篇: 通过XML设置屏幕方向(android: