开发者日志(2016年01月24日17:47:27):关于Android BaseAdapter
BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView、Spinner、Gallery及GridView等UI显示组件,它是继承自接口类Adapter。
MainActivity.class
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<ItemBean> itemBeen=new ArrayList<ItemBean>();
//给ItemBean创建一个集合,ArrayList类
for (int i = 0; i < 20; i++)
{
itemBeen.add(new ItemBean(R.mipmap.ic_launcher,"标题"+i,"内容"+i));
}
ListView listView= (ListView) findViewById(R.id.listView);
listView.setAdapter(new MyAdapter(MainActivity.this,itemBeen));
}
}
ItemBean.class
public class ItemBean
{
public int Item_imageResid;
public String Item_Title;
public String Item_Content;
public ItemBean(int Item_imageResid, String Item_Title, String Item_Content)
{
this.Item_imageResid = Item_imageResid;
this.Item_Title = Item_Title;
this.Item_Content = Item_Content;
}
}
ItemBean类属于List中的单个栏,包含单个栏目中的所有组件,赋值直接赋予组件的内容itemBeen.add(new ItemBean(R.mipmap.ic_launcher,”标题”+i,”内容”+i));
MyAdapter.class 自定义Adapter类
public class MyAdapter extends BaseAdapter
{
private List<ItemBean> itemBeen_List;
private LayoutInflater layoutInflater;
public MyAdapter(Context context, List<ItemBean> itemBeen_List)
{
this.itemBeen_List = itemBeen_List;
layoutInflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
//position 索引,convertView View的缓冲池
{
//实例化ViewHolder
ViewHolder viewHolder = new ViewHolder();
if (convertView == null)//如果 convertView为空 View未被实例化缓存池中无缓存
{
//如果为空,创建一个新的布局后加载资源,不为空直接加载资源
convertView = layoutInflater.inflate(R.layout.item, null);
viewHolder.imageView = (ImageView) convertView.findViewById(R.id.ItemImgView);
viewHolder.title = (TextView) convertView.findViewById(R.id.Item_Title);
viewHolder.context = (TextView) convertView.findViewById(R.id.Item_Content);
convertView.setTag(viewHolder);//如果没有,将convertView设置进入Tag标签
}
else
{
//如果有,直接通过Tag取出
viewHolder= (ViewHolder) convertView.getTag();
}
/************************************************
* imageView.setImageResource(itemBeen_List.get(position).Item_imageResid);
* 这句话的意思是:
* 设置图像资源 从 itemBeen对象里面得到Item_imageResid这个变量id,
* 因为itemBeen_List属于List,有很多个,所以需要.get(position)这个索引来定位
*/
ItemBean itemBean = itemBeen_List.get(position);//从List中取出指定位置position,存入ItemBean(List是ItemBean集合)
viewHolder.imageView.setImageResource(itemBean.Item_imageResid);
viewHolder.title.setText(itemBean.Item_Title);
viewHolder.context.setText(itemBean.Item_Content);
return convertView;
}
class ViewHolder
{
//设置ViewHolder 避免重复的findViewById
public ImageView imageView;
public TextView title;
public TextView context;
}
@Override
public int getCount()
{
//返回ListView需要显示的数据量
return itemBeen_List.size();
}
@Override
public Object getItem(int position)
{
//取出对应索引的数据项 position为索引
return itemBeen_List.get(position);
}
@Override
public long getItemId(int position)
{
//返回指定索引的对应的数据项
return position;
}
}