gpt4 book ai didi

android - 单击 ListView 的 subview 时从 ListView 获取数据

转载 作者:行者123 更新时间:2023-11-29 16:08:08 24 4
gpt4 key购买 nike

我有一个 ListView,每行有一个按钮。如果我需要在单击行时获取数据,那么在 onItemClickListener 中执行以下操作将非常容易:

        @Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
CustomType type = (CustomType) arg0.getItemAtPosition(arg2); //get data related to position arg2 item
}
});

实际上,我需要在单击 ListView 行的按钮时获取数据(即 CustomType 对象),而不是行本身。由于 OnClickListener 没有类似 AdapterView<?> 的东西作为一个参数(显然),我想知道我该如何处理这个?

到目前为止,我想到了获取按钮的父项,即 ListView ,并以某种方式获取单击按钮所在的行的位置,然后调用类似: myAdapter.getItem(position);但这只是一个想法,所以拜托,我会很感激在这里的一些帮助。

最佳答案

您可能正在为您的 ListView 使用自定义适配器,因此最简单的方法是在适配器的 getView() 方法中设置position 参数作为 Button 的标签。然后您可以在 OnClickListener 中检索标签,然后您就会知道点击了哪一行:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
//...
button.setTag(Integer.valueOf(position));
button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Integer rowPosition = (Integer)v.getTag();
}
});
//...
}

您还可以从行 View 中提取数据。如果可以在该行的 View 中找到该行的所有数据,这将起作用:

button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
LinearLayout row = (LinearLayout)v.getParent(); I assumed your row root is a LinearLayout
// now look for the row views in the row and extract the data from each one to
// build the entire row's data
}
});

关于android - 单击 ListView 的 subview 时从 ListView 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16259960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com