gpt4 book ai didi

android - 在光标适配器中使用点击事件

转载 作者:搜寻专家 更新时间:2023-11-01 07:59:00 26 4
gpt4 key购买 nike

我有一个游标适配器显示的项目列表,当我使用 onItemClick 时,我得到了正确的行并且能够做我需要的(我的目标是添加一个 View 到那个单击的项目。现在我需要在单击 listView 单元格中的按钮时发生此操作。但是,按钮单击事件不会返回正确的单元格,而是返回列表中随机的其他单元格,这是我的代码中的一个示例:

public class CustumAdapter extends CursorAdapter implements OnClickListener{

private Context context;

private Button btn_maybe;

private String name;

public CustumAdapter(Context context, Cursor c, LatLng position) {
super(context, c);

this.position = position;
this.context = context;

}

@Override
public void bindView(View view, final Context context, Cursor c) {

name = c.getString(c.getColumnIndex(ContractPlaces.PLACE_NAME));
btn_maybe = (Button) view.findViewById(R.id.cursor_layout_maybe);
btn_maybe.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

//i need to use the correct view from BindView here

}
});



nameView.setText(name);

在这个示例代码中,我想点击单元格中的一个按钮,让我访问按钮真正所在的 View ,但是我从随机列表单元格中返回 View ,我如何才能在我的点击中获得正确的单元格信息听众?

编辑:

感谢@darnmason,我想通了,为了使用光标适配器中的单击事件获取列表项的 View ,将有问题的按钮设置为 cursor.getPosition() 的标签,因此标签是项目的正确位置,在 ListView 生命周期的真正本质中,如果我想要在特定位置的项目的 View ,我将调用

  //where lv is the ListView (you can pass it to the adapter as a parameter).
//getChildAt returns a view in a position
//value is the value of cursor.getPosition() so its the correct position of the item where //the button was clicked.
//lv.getFirstVisiblePosition() is the first position that is actually on screen,
View view = lv.getChildAt(value - lv.getFirstVisiblePosition());

当你从实际位置中减去这个你得到你需要的位置时,不要忘记添加

 if(view == null)
return;

避免异常。

最佳答案

name 在类中声明并在每次执行 bindView 时覆盖,当您单击按钮时,最近绑定(bind)的 View 显示在 Toast 中

我喜欢遵循的一种模式是将可点击 View 的索引存储在其标记中。然后在 onClick 中,您从 View 中获取索引,并从适配器中获取该索引的数据。

关于android - 在光标适配器中使用点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24065193/

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