1.中 Adapter 要继承 BaseAdapter 对其中 getview() 方法重新
对getview() 方法分析
public View getView(int position, View convertView, ViewGroup parent) {
Log.v(TAG, "getView>>>>>>>");
ChatMsgEntity entity = coll.get(position);
int itemLayout = entity.getLayoutID();
LinearLayout layout = new LinearLayout(ctx);
LayoutInflater vi = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
vi.inflate(itemLayout, layout, true);
TextView tvName = (TextView) layout.findViewById(R.id.messagedetail_row_name);
tvName.setText(entity.getName());
TextView tvDate = (TextView) layout.findViewById(R.id.messagedetail_row_date);
tvDate.setText(entity.getDate());
TextView tvText = (TextView) layout.findViewById(R.id.messagedetail_row_text);
tvText.setText(entity.getText());
return layout;
}
LayoutInflater 类的作用相当于 类似于findViewById(), 找到并且实例化
LayoutInflater vi = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); // 得到 对象
// 将 itemLayout 源文件 填到 layout中vi.inflate(itemLayout, layout, true);
getview 返回的对象是 view
layout 继承了view 所以返回layout也ok
public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder=new ViewHolder(); convertView = mInflater.inflate(R.layout.schinforitem, null); holder.InF_IMG = (ImageView)convertView.findViewById(R.id.img); //这里特意将 author 和 title 的布局做一下交换 holder.InF_Author = (TextView)convertView.findViewById( R.id.info_title); holder.InF_Title = (TextView)convertView.findViewById(R.id.faculty); holder.InF_Time = (TextView)convertView.findViewById(R.id.time); holder.local = (TextView) convertView.findViewById(R.id.location); holder.IV =(ImageView) convertView.findViewById(R.id.feedback_settings_arrow); convertView.setTag(holder); // }else { holder = (ViewHolder)convertView.getTag(); } final String title = (String)mData.get(position).getInF_Title(); String demotitle=title; if(title.length()>13) demotitle=(String) title.subSequence(0, 11)+".."; final String content = (String)mData.get(position).getInF_Content(); final String author=(String)mData.get(position).getInF_Author(); String demoauthor=author; if(author.length()>17) demoauthor=(String) author.subSequence(0, 14)+".."; holder.InF_IMG.setBackgroundResource(R.drawable.cs); holder.InF_Author.setText(demoauthor); holder.InF_Title.setText(demotitle); holder.InF_Time.setText((String)mData.get(position).getInF_Time()); holder.local.setText((String)mData.get(position).getInF_Locat()); holder.IV.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { showInfo(title,content); } }); return convertView; }
中 View.getTag View.setTag() 的方法介绍http://dev.maidou5.com/?p=44
http://android.tgbus.com/Android/tutorial/201103/347527.shtml