南京网站建设招聘深圳网站推广
第一步:找到ListView的控件
通过findViewById 找到ListView的控件 ListView listView = findViewById(R.id.listView);
第二步:创建Bean类 得到set和get的方法
解析获取的数据创建Bean类 得到set和get的方法
public class Bean {String nanm="";
public String getNanm() {
return nanm;}
public void setNanm(String nanm) {
this.nanm = nanm;}
}
第三步:创建MyAdpter的对象
返回找到ListView控件的页面下去创建MyAdpter的对象 传递数据到适配器MyAdpter
MyAdpter myAdpter = new MyAdpter(data, this);
listView.setAdapter(myAdpter);
第四步:创建适配器MyAdpter
创建适配器MyAdpter 继承 BaseAdapte,重点标明ViewHolder的创建是避免频繁创建view导致的内存消耗;大概意思就是-----
默认加载10个itemview,初始化的时候创建一个viewholder,并把10个itemview加载到内存里面。
接着下滑,加载5-15的item,这个时候,显示的还是只有10个view。
我们只是需要重新填充view的数据,而不需要再次创建view并加载到内存里面,这样就可以复用itemview而避免频繁创建view导致的内存消耗
public class MyAdpter extends BaseAdapter {private List<Ben> data; //接受数据private Context context; //接受上下文//获取传输过来的数据public MyAdpter(List<Ben> data,Context context) {this.data = data;this.context=context;}//返回多少数据@Overridepublic int getCount() {return data.size();}@Overridepublic Object getItem(int i) {return null;}@Overridepublic long getItemId(int i) {return i;}@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {ViewHolder viewHolder;//观察convertView随ListView滚动情况 if (view==null){viewHolder=new ViewHolder();//拿到布局view= LayoutInflater.from(context).inflate(R.layout.item,viewGroup,false);//得到各个控件的对象viewHolder.textView = view.findViewById(R.id.item);//绑定ViewHolder对象 view.setTag(viewHolder);}else {//取出ViewHolder对象 viewHolder= (ViewHolder) view.getTag();}/**设置TextView显示的内容,即我们存放在动态数组中的数据*/viewHolder.textView.setText(data.get(i).getNanm());return view;}/**存放控件ViewHolder*/ private final class ViewHolder{//存放数据有哪些TextView textView;}
}
第五步:实现点击
实现点击
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {}
});