热门栏目:  公务员继续教育  专业技术人员继续教育  工勤人员继续教育  路之遥博客

您的位置:首页>路之遥博客>安卓开发

安卓增加一个列表的理解(adapter)

2015-12-01 15:49 浏览: 1 字体:〖

摘要: 安卓增加一个列表的理解(adapter)...

这里制作一个商品的List,要点如下:

 
首先制作一个类 EXTENDS ArrayAdapter  在 ArrayAdapter  中,每个条目是一个JAVABEAN
 
最好增加一个viewMap?   大概用来加速,放到内存当中,不用每次都去获取,有助于提高效率,MAP中的IDX与LIST当中的内容对应
 
在getView()的方法当中,获取List中每一行的Bean,为每一个元素设置内容
 
LayoutInflater 在初始化方法当中调用,代码相对比较漂亮,效率也较高
 
这里有几个知识点
 
1,public View getView(int position, View convertView, ViewGroup parent) {     这里的convertView是?
 
这个convertView其实就是最关键的部分  原理上讲 当ListView滑动的过程中 会有item被滑出屏幕 而不再被使用 这时候Android会回收这个条目的view 这个view也
 
就是这里的convertView
 
当item1被移除屏幕的时候 我们会重新new一个View给新显示的item_new 而如果使用了这个convertView 我们其实可以复用它 这样就省去了new View的大量开销
 
2,参数parent
parent)  viewgroup通常情况下是你view上层的layout, 这样你不但可以对view进行操作,还能对它上层的布局操作
 
3,在ACTIVITY中的调用
MyImageAndTextListAdapter listAdapter=new MyImageAndTextListAdapter(this,newsList);
list.setAdapter(listAdapter);
list.setOnItemClickListener(new OnItemClickListener() {  
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,  long arg3) {    //arg2是postion
      Intent intent = new Intent();
      int postion = arg2;
      NewsBean curBean = newsList.get(postion);
      intent.putExtra("news_id",curBean.getId());
      intent.setClass(ZhanPinListActivity.this, ZhanPinDetailActivity.class);
      startActivity(intent);
    }  
  });  
 
4,附上adapter的源代码
public class MyImageAndTextListAdapter extends ArrayAdapter<NewsBean> {
 
public MyImageAndTextListAdapter(Activity activity,
List<NewsBean> newsList) {
super(activity, 0, newsList);
}
 
private AsyncImageLoader imageLoader = new AsyncImageLoader();
 
private Map<Integer, View> viewMap = new HashMap<Integer, View>();
 
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = this.viewMap.get(position);
 
if (rowView == null) {
LayoutInflater inflater = ((Activity) this.getContext())
.getLayoutInflater();
rowView = inflater.inflate(R.layout.activity_zhanpin_content, null);
NewsBean newsBean = this.getItem(position);
 
TextView titleView = (TextView) rowView.findViewById(R.id.InfoItemTitle);
titleView.setText(newsBean.getTitle());
 
//TextView textView = (TextView) rowView.findViewById(R.id.InfoItemText);
//            textView.setText(newsBean.getContent());
 
final ImageView imageView = (ImageView) rowView
.findViewById(R.id.InfoImg);
imageLoader.loadDrawable(newsBean.getImage(), new ImageCallback() {
@Override
                public void imageLoaded(Drawable imageDrawable, String imageUrl) {
imageView.setImageDrawable(imageDrawable);
}
});
viewMap.put(position, rowView);
}
return rowView;
}
 
}
 
 

你可能也喜欢:

上一篇:AsyncTask的参数解释

下一篇:没有了

最近更新

路之遥继续教育网,扫描加好友

技术支持:常州路之遥软件有限公司 版权所有
备案号:苏ICP备09092440号