AndroidListView的创建以及数据适配器的使用

    技术2022-07-10  104

    定义一个activity 就是直接定义一个就好了 然后在定义一个xml文件来作为数据适配器的内容 一个image一个text就是来这样定义的 代码填写

    public class listview extends AppCompatActivity { String[] name={"京东","淘宝","拼多多","喜加一"}; int[] sum={R.mipmap.a,R.mipmap.b,R.mipmap.a,R.mipmap.b}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_listview); ListView listView = findViewById(R.id.list); Mybaseadap mybaseadap=new Mybaseadap(); listView.setAdapter(mybaseadap); } class Mybaseadap extends BaseAdapter { @Override public int getCount() { return name.length; } @Override public Object getItem(int position) { return name[position]; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { /* View view = View.inflate(listview.this, R.layout.list_item, null); ImageView imageView = view.findViewById(R.id.item); TextView textView = view.findViewById(R.id.item_text); textView.setText(name[position]); imageView.setBackgroundResource(sum[position]);*/ holder holder; if(convertView==null) { convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.list_item,null); holder=new holder(); holder.imageView=convertView.findViewById(R.id.item); holder.textView=convertView.findViewById(R.id.item_text); convertView.setTag(holder); } else { holder=(holder)convertView.getTag(); } holder.imageView.setBackgroundResource(sum[position]); holder.textView.setText(name[position]); return convertView; } } class holder { ImageView imageView; TextView textView; } }

    整体来看其实代码并不是很复杂,为listview组件添加一个BaseAdapter数据适配器的实现类,然后数组的填写在方法中一写就完事。 但是后期的优化看起来并不是很简单,因为要用到convertView缓存区,不是很懂这是怎么实现优化的,好像new对象是变少了,顺便说一下,convert的工作原理是,在你划上去之后,最上面的对象,存到缓存区,再创建最下面的对象,应该是这样

    Processed: 0.010, SQL: 9