我有一个光标适配器显示的项目列表,当我使用onItemClick
时,我得到了正确的行并且能够做我需要的事情(我的目标是在单击时向该项目添加视图。现在我需要在单击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);
在这个示例代码中,我想要单击单元格中的按钮,让我访问按钮真正所在的视图,但是我从随机列表单元格中获取视图,如何在我的单击侦听器中获取正确的单元格信息?
编辑:
所以多亏了@darnmason,我想通了,为了使用光标适配器中的单击事件获取列表项的视图,将有问题的按钮设置为cursor.get位置()的标签,因此标签是正确的位置项目,在列表视图生命周期的真正本质中,如果我想要特定位置的项目视图,我会调用
//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;
以避免例外。
您可以创建自己的类来实现onClickListener,并将对象提供给构造函数:
private static MyOnClickListener implements OnClickListener {
Context mContext;
String mName;
public MyOnClickListener(Context context, String name) {
mContext = context;
mName = name;
}
@Override
public void onClick(View v) {
Toast.makeText(mContext, mName, Toast.LENGTH_SHORT).show();
}
}
@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 MyOnClickListener(context, name));
您可以使用setTag和getTag
btn_maybe.setTag(name);
然后在onClick
中
String value = (String) v.getTag();
使用该值显示toast
Toast.makeText(context, value, Toast.LENGTH_SHORT).show();
在类中声明名称,并在每次执行bindView时覆盖,单击按钮时,最近绑定的视图将显示在Toast中。
我喜欢遵循的一种模式是将可单击视图的索引存储在其标记中。然后在onClick中,从视图中获取索引,并从适配器中获取该索引的数据。
考虑一个,下面是它的 双击后,我得到了以下令人费解的结果 而不是预期的 显然,在双击过程中,在所述双击之前单击一次。为什么会这样? rough.java Env: openjdk 15.0.2 2021-01-19 openjdk运行时环境(构建15.0.2 7-27) openjdk 64位服务器虚拟机(构建15.0.2 7-27,混合模式,共享) Windows 10
我是kotlin android的新手。我已经创建了回收站视图的适配器。但是我不能为每个回收站视图项目执行单击事件。我需要参考代码的解释。请帮我做这件事。提前谢谢。这是我的代码供您参考。
我很难用简单的游标适配器从sqlite数据库填充微调器。我必须使用一个简单的游标适配器,而不是数组适配器。我的主要活动、函数和xml文件如下: 功能如下: xml文件在下面; 当我运行应用程序时,将显示以下屏幕。有数据,但似乎是空的。我有_ id,列的名称。 空微调器 谢谢你的帮助。
我有一个带有按钮的视图和一个列表视图,由包含bindView()和newView()的光标适配器支持,用于自定义视图。列表的每一行都包含一个Text和一个复选框。每个视图的数据来自数据库。我正在光标适配器构造函数中传递我的数据库适配器。当复选框被选中或取消选中时,我用它来更新数据库(效果很好)。当然,我对光标运行“重新查询”并view.refreshDrawableState())。这是个好主意吗
问题内容: 我正在将多页php + jquery网站转换为单页角度应用程序。但是我已经用jquery编写了很多代码,因此只打算将php换成与路由等有关的角度。 我遇到的一个我无法弄清楚的问题是,在转换停止工作之前,我一直用尽的jquery click事件。如果更改代码以使其通过ng- click触发,则它将起作用,即使我从控制台调用该函数也是如此。jQuery正常工作,我在提到的函数中放了一些jQ
问题内容: 我正在尝试在matplotlib中实现一个简单的鼠标单击事件。我希望绘制一个图,然后使用鼠标选择积分的上限和下限。到目前为止,我可以将坐标打印到屏幕上,但不能将其存储以供以后在程序中使用。我也想在第二次单击鼠标后退出与该图的连接。 下面是当前绘制并打印坐标的代码。 我的问题: 如何存储图形到列表的坐标?即点击= [xpos,ypos] 是否可以获取两组x坐标以便对该行的该部分进行简单的