定义一个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的工作原理是,在你划上去之后,最上面的对象,存到缓存区,再创建最下面的对象,应该是这样