android adapter例子,Android BaseAdapter应用实例

本文详细介绍了如何在Android中使用BaseAdapter来创建自定义ListView。通过一个实例展示了ViewHolder的设计模式,优化了ListView的性能。BaseAdapter的getCount(), getItem(), getItemId()和getView()方法的实现被详细讲解。此外,还涵盖了点击事件的处理以及如何从Adapter获取点击的Item数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文实例讲述了Android BaseAdapter的应用方法。分享给大家供大家参考,具体如下:

直接上源码

/**

* 生成联系人Items,即Items中包含如下控件

*

*/

public final class ViewHolder{

public ImageView callImg;//打电话的图标

public ImageView headImg;//头像

public TextView peopleName;//联系人名

public TextView peopleNumber;//联系人号码

}

public class MyAdapter extends BaseAdapter {

private LayoutInflater mInflater;

public MyAdapter(Context context) {

this.mInflater = LayoutInflater.from(context);

}

public int getCount() {

return listPeople.size();

}

public Object getItem(int arg0) {

return listPeople.get(arg0);

}

public long getItemId(int arg0) {

return arg0;//当初在看别人例子时,此处返回NUll,加载都没问题,但在ListView中的OnItemsClick事件中就报错了。

}

public View getView(final int position, View convertView,

ViewGroup parent) {

ViewHolder holder = null;

if (convertView == null) {

holder = new ViewHolder();

convertView = mInflater.inflate(R.layout.peopleinfo, null);

holder.callImg = (ImageView) convertView

.findViewById(R.id.callbtn);

holder.headImg = (ImageView) convertView

.findViewById(R.id.contactImage);

holder.peopleName = (TextView) convertView

.findViewById(R.id.peopleName);

holder.peopleNumber = (TextView) convertView

.findViewById(R.id.peopleNumber);

convertView.setTag(holder);

} else {

holder = (ViewHolder) convertView.getTag();

}

final String name = (String) listPeople.get(position).get(

"peopleName");

final String num = (String) listPeople.get(position).get(

"peopleNumber");

holder.peopleName.setText((String) listPeople.get(position).get(

"peopleName"));

holder.peopleNumber.setText((String) listPeople.get(position).get(

"peopleNumber"));

// holder.headImg.setImageResource(R.drawable.ic_menu_contact);

if(listPeople.get(position).get("peoplePhoto") != null){

holder.headImg.setImageBitmap((Bitmap)listPeople.get(position).get(

"peoplePhoto"));

}

holder.callImg.setImageResource(R.drawable.ic_dial_action_call);

holder.callImg.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

//处理Items中控件的触发事件

}

});

return convertView;

}

}

/*

*应用BaseAdapter

*

*/

final MyAdapter myAdapter = new MyAdapter(this);

contacts.setAdapter(myAdapter);

contacts.setOnItemClickListener(new OnItemClickListener() {

@SuppressWarnings("unchecked")

public void onItemClick(AdapterView> arg0, View arg1, int arg2,

long arg3) {

Map map = (Map) myAdapter.getItem(arg2);//此处需要注意,

String peopleNumber = String.valueOf(map.get("peopleNumber"));

}

});

希望本文所述对大家Android程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值