今日学习了数据适配器ArrayAdapter与BaseAdapter.
ArrayAdapter相比SimpleAdapter较为简单而且只能用一组数据,其余与SimpleAdapter类似。
BaseAdapter就较为复杂了,首先要新建一个类继承BaseAdapter,并重写四个方法。
getCount()要绑定的数据条目,用size()函数即可获取。
getItem(int position)根据索获取该位置的对象,一般可以不用重写。
getItemId(int position)获取条目id可以不用重写。
getView(int position,View convertView,ViewGroup parent)获取该条目要显示的界面。
若convertView为空就要获取布局文件:convertView= LayoutInflater.from(context).inflate(R.layout.list_item,null);
然后通过convertView获取控件id然后给控件赋值即可。下面为代码:
public View getView(int position, View convertView, ViewGroup parent) { if(convertView==null) { convertView= LayoutInflater.from(context).inflate(R.layout.list_item,null); } ImageView imageview=convertView.findViewById(R.id.image1); TextView textview1=convertView.findViewById(R.id.text1); Button button=convertView.findViewById(R.id.button1); Map<String,Object> map=lists.get(position); imageview.setImageResource((Integer) map.get("imageViews")); textview1.setText((String)map.get("name")); button.setOnClickListener( new View.OnClickListener(){ public void onClick(View view){ AlertDialog.Builder builder=new AlertDialog.Builder(context); builder.setTitle("( ゜- ゜)つロ 乾杯~").setIcon(R.mipmap.ic_launcher). setMessage((String)map.get("content")).setCancelable(true); AlertDialog ad=builder.create(); ad.show(); } }); return convertView; }
效果截图: