如何为随机自定义 ListView 适配器设置按钮单击事件?
Posted
技术标签:
【中文标题】如何为随机自定义 ListView 适配器设置按钮单击事件?【英文标题】:How to set on button clicked event for Randomly Custom ListView Adapter? 【发布时间】:2015-11-17 11:23:12 【问题描述】:我正在创建自定义列表视图适配器,它由 2 个文本视图(tvA 和 tvB)、一个微调器(具有固定 3 个值)和一个按钮(okButton)组成。 列表的数据是动态填充的。 按下 buttonOk 时,既获取 textviews 值,也获取 spinner 的当前选定项并对其进行烘烤。
我该怎么做?对不起我的英语。
【问题讨论】:
你尝试了什么,兄弟? 你能展示你的适配器类吗? 【参考方案1】:在填充值的 getView() 方法中添加此侦听器。
okButton.setOnClickListener(new OnItemClickListener(position, tvA, tvB, spinner));
并像这样创建 OnItemClickListener 类
private class OnItemClickListener implements View.OnClickListener
private int mPosition;
OnItemClickListener(int position, TextView tvA, TextView tvB, Spinner spinner)
mPosition = position;
...
@Override
public void onClick(View arg0)
// handle everything here
【讨论】:
看起来不错,你能告诉我 okButton.setOnClickListener(new OnItemClickListener(position, tvA, tvB, spinner)) 中的位置参数是什么;【参考方案2】:如果所有视图都是兄弟,则使用以下代码
((Button) view.findViewById(R.id.okButton))
.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
// TODO Auto-generated method stub
View parentRow = (View) v.getParent();
RelativeLayout rel = (RelativeLayout) parentRow.getParent() ;
TextView tvA = (TextView) rel.findViewById(R.id.tvA);
TextView tvB = (TextView) rel.findViewById(R.id.tvB);
Spinner sp = (spinner) rel.findViewById(R.id.spinner1);
//list view position-
ListView listView = (ListView) parentRow
.getParent();
int position = listView
.getPositionForView(parentRow);
Toast.makeText(context, tvA.getText().toString() + " " + position,Toast.LENGTH_SHORT).show();
Toast.makeText(context, tvB.getText().toString() + " " + position,Toast.LENGTH_SHORT).show();
Toast.makeText(context, spinner.getSelectedItem().toString() + " " + position, Toast.LENGTH_SHORT).show();
);
【讨论】:
以上是关于如何为随机自定义 ListView 适配器设置按钮单击事件?的主要内容,如果未能解决你的问题,请参考以下文章
在自定义适配器类中发送服务器请求后,如何更改 Listview 按钮名称?
如何为列表视图创建自定义适配器?获取 ResourceNotFoundException
自定义 ListView 适配器中的 ImageButton