android 适配器点击事件,android listview适配器里区分不同按钮的点击事件

本文介绍了如何创建一个自定义的ListView适配器`ListItemClickAdapter`,该适配器扩展了BaseAdapter,并实现了点击事件接口`ListItemClickHelp`。在适配器中,每个列表项的按钮点击事件被处理,通过回调接口更新UI。在`MainActivity`中,展示了如何使用这个适配器并实现点击事件监听,当按钮被点击时,会更新TextView的内容。
摘要由CSDN通过智能技术生成

一、适配器 ListItemClickAdapterpublic class ListItemClickAdapter extends BaseAdapter {

private Context contxet;

private ArrayList list;

private ListItemClickHelp callback;

private LayoutInflater mInflater;

public ListItemClickAdapter(Context contxet, ArrayList list,

ListItemClickHelp callback) {

this.contxet = contxet;

this.list = list;

this.callback = callback;

}

@Override

public int getCount() {

return list.size();

}

@Override

public Object getItem(int position) {

return null;

}

@Override

public long getItemId(int position) {

return 0;

}

@Override

public View getView(int position, View convertView, final ViewGroup parent) {

mInflater = (LayoutInflater) contxet

.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

ViewHolder holder;

if (convertView == null) {

convertView = mInflater.inflate(

R.layout.block_list_item, null);

holder = new ViewHolder();

holder.mAd_tv_show = (TextView) convertView

.findViewById(R.id.ad_tv_show);

holder.mAd_btn_one = (Button) convertView

.findViewById(R.id.ad_btn_one);

holder.mAd_btn_two = (Button) convertView

.findViewById(R.id.ad_btn_two);

convertView.setTag(holder);

} else {

holder = (ViewHolder) convertView.getTag();

}

holder.mAd_tv_show.setText(list.get(position));

final View view = convertView;

final int p = position;

final int one = holder.mAd_btn_one.getId();

holder.mAd_btn_one.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

callback.onClick(view, parent, p, one);

}

});

final int two = holder.mAd_btn_two.getId();

holder.mAd_btn_two.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

callback.onClick(view, parent, p, two);

}

});

return convertView;

}

public static class ViewHolder {

TextView mAd_tv_show;

Button mAd_btn_one;

Button mAd_btn_two;

}

}

二、接口 ListItemClickHelp

/**

* listview点击事件接口

* @author Alan

*

*/

public interface ListItemClickHelp {

void onClick(View item, View widget, int position, int which);

}

三、界面 MainActivity

public class MainActivity extends Activity implements ListItemClickHelp {

private TextView mtv_show;

private ListView mlv_show;

private ArrayList mdata = new ArrayList();

private ListItemClickAdapter madapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initLayout();

}

private void initLayout() {

mdata.add("One");

mdata.add("Two");

mdata.add("Three");

mdata.add("Four");

mdata.add("Five");

mdata.add("菠萝");

mdata.add("苹果");

mdata.add("葡萄");

mdata.add("哈密瓜");

mdata.add("香蕉");

mtv_show = (TextView) this.findViewById(R.id.tv_show);

mlv_show = (ListView) this.findViewById(R.id.lv_show);

madapter = new ListItemClickAdapter(this, mdata, this);

mlv_show.setAdapter(madapter);

mlv_show.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView> adapter, View view,

int position, long arg3) {

mtv_show.setText(mdata.get(position));

}

});

}

@Override

public void onClick(View item, View widget, int position, int which) {

switch (which) {

case R.id.ad_btn_one:

mtv_show.setText(mdata.get(position) + "Btn one");

break;

case R.id.ad_btn_two:

mtv_show.setText(mdata.get(position) + "Btn two");

break;

default:

break;

}

}

}

四、效果图

fc96cad542d1b8254da3aa67172ce90b.png

原文:http://blog.csdn.net/icqapp/article/details/21470247

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值