android之自定义适配器(重写的getView()方法中convertView元素的妙...
2023年7月7日发(作者:)
android之⾃定义适配器(重写的getView()⽅法中convertView元素的妙。。。实现效果:主要还是ListView的优化:基本思路:<1>使⽤⾃定义适配器完成操作<2>将listView进⾏优化处理1.
2.
3.
4.
5.
6.
/* //ListView完成了重⽤条⽬的优化操作
if(convertView==null){
//2.将布局⽂件转换成View 对象
convertView=e(,_item,null);
} ⽰例代码:package apterdemo05;import ;import patActivity;import ;import oup;import apter;import iew;import ew;import ew;import ;import ist;import ;public class MainActivity extends AppCompatActivity { private ListView listView_persons; private MyAdapter adapter; private List personList; @Override protected void onCreate(Bundle savedInstanceState) { te(savedInstanceState); setContentView(ty_main); ew_persons= (ListView) ewById(ew_persons); ew_persons= (ListView) ewById(ew_persons); List=a(); r=new MyAdapter(List); ew_pter(r); } private List getData() { personList=new ArrayList<>(); for(int i=0;i<24;i++){ Person person=new Person( (_01+i), "⼩丽"+i, 20+i ); (person); } return personList; } private final class MyAdapter extends BaseAdapter{ private List personList; public MyAdapter(List personList) { List=personList; } @Override public int getCount() { return (); } @Override public Object getItem(int position) { return (position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { //原始⽅式:没有重⽤条⽬,造成极⼤的资源浪费 /*//1.得到当前条⽬对应的数据对象 Person person=(position); //2.将布局⽂件转换成View 对象 View view=e(,_item,null); //3.找到当前条⽬对象中相应的控件对象 ImageView imageView_header= (ImageView) ewById(iew_header); TextView textView_name= (TextView) ewById(ew_name); TextView textView_age= (TextView) ewById(ew_age); //4.为控件对象设置相应的值 imageView_geResource(der()); textView_t(e()); //此处报异常:ces$NotFoundException: String resource ID #0x14 //此处报异常:ces$NotFoundException: String resource ID #0x14 // textView_t(()); textView_t(f(()));*/ //1.得到当前条⽬对应的数据对象 Person person=(position); /* View view=null; if(convertView==null){ //2.将布局⽂件转换成View 对象 view=e(,_item,null); }else{ view=convertView; } //3.找到当前条⽬对象中相应的控件对象 ImageView imageView_header= (ImageView) ewById(iew_header); TextView textView_name= (TextView) ewById(ew_name); TextView textView_age= (TextView) ewById(ew_age); //4.为控件对象设置相应的值 imageView_geResource(der()); textView_t(e()); //此处报异常:ces$NotFoundException: String resource ID #0x14 // textView_t(()); textView_t(f(()));*/ /* //ListView完成了重⽤条⽬的优化操作 if(convertView==null){ //2.将布局⽂件转换成View 对象 convertView=e(,_item,null); } //3.找到当前条⽬对象中相应的控件对象 ImageView imageView_header= (ImageView) ewById(iew_header); TextView textView_name= (TextView) ewById(ew_name); TextView textView_age= (TextView) ewById(ew_age); //4.为控件对象设置相应的值 imageView_geResource(der()); textView_t(e()); //此处报异常:ces$NotFoundException: String resource ID #0x14 // textView_t(()); textView_t(f(()));*/ //ListView完成了重⽤条⽬的优化操作,继续解决重复查找控件的问题 ViewHolder viewHolder=null; if(convertView==null){ viewHolder=new ViewHolder(); //2.将布局⽂件转换成View 对象 convertView=e(,_item,null); //3.找到当前条⽬对象中相应的控件对象 ImageView imageView_header= (ImageView) ewById(iew_header); TextView textView_name= (TextView) ewById(ew_name); TextView textView_name= (TextView) ewById(ew_name); TextView textView_age= (TextView) ewById(ew_age); iew_header=imageView_header; ew_name=textView_name; ew_age=textView_age; //将当前条⽬控件封装成ViewHolder对象并和当前条⽬进⾏绑定 (viewHolder); }else{ viewHolder= (ViewHolder) (); } //4.为控件对象设置相应的值 iew_geResource(der()); ew_t(e()); ew_t(f(())); return convertView; } /** * 声明每⼀个条⽬中拥有的控件对象 */ class ViewHolder{ ImageView imageView_header; TextView textView_name; TextView textView_age; } }}
发布者:admin,转转请注明出处:http://www.yc00.com/news/1688676589a161736.html
评论列表(0条)