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机制的理解
- 下一篇: Android之Android:layo