gpt4 book ai didi

java - 使用按钮上的 OnClickListener 返回 Android 列表中的位置

转载 作者:行者123 更新时间:2023-11-30 09:22:05 25 4
gpt4 key购买 nike

我浏览了互联网,一定遗漏了一些东西。我的任务看起来很简单,我已经找到了其他一些类似的帖子,但我还没有能够让我的工作。以下是我的代码(抱歉,我是 java 和 android 的新手,所以如果我做了一些不是最佳实践的事情,我深表歉意。)无论如何我的情况,

我有一个 listView,它填充数据库中的几个文本字段,在这些文本框的右侧,我创建了一个删除按钮,并希望在按下相应的删除按钮时删除该记录(行) .我已经成功地为我的按钮创建了一个 OnClickListener,但是我无法在 ListView 中获取按钮被点击的位置。

---------------------------------------------------
TextView TextView | Delete Button
---------------------------------------------------
TextView TextView | Delete Button
---------------------------------------------------

代码:

public class CalcCursorAdapter extends SimpleCursorAdapter implements Filterable{

private Context mContext;
private ListView mListView;
private int mLayout;

protected static class ViewHolder {
protected TextView text;
protected ImageButton button;
private int position;
}


@SuppressWarnings("deprecation")
public CalcCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to)
{
super(context, layout, c, from, to);
this.mContext = context;
this.mLayout = layout;

//mListView = .getListView();

}

@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView summary = (TextView)view.findViewById(R.id.calctvPrice);
TextView savings = (TextView)view.findViewById(R.id.calctvSavings);
summary.setText(cursor.getString(cursor.getColumnIndexOrThrow("qcFinalPrice")));
savings.setText(cursor.getString(cursor.getColumnIndexOrThrow("qcSavings")));



}

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
ViewHolder holder = new ViewHolder();

LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.calc_list_item, parent, false);

holder.button = (ImageButton) v.findViewById(R.id.qcbtnDelete);
holder.button.setOnClickListener(deleteButton);

bindView(v, context, cursor);
v.setTag(holder);
return v;

}

private OnClickListener deleteButton = new OnClickListener() {
public void onClick(View v){

Toast.makeText(mContext.getApplicationContext(), "test", Toast.LENGTH_SHORT).show();
}
};

public long qcItemId(int position) {
return position;
}
}

我看了很多例子,很多时候它们看起来是用于数组适配器的,我发现的另一件事是有些人会覆盖 getView 函数,我的印象是你可以执行上述任务不这样做。另外,我不希望列表项 iteslef 是可点击的,只是按钮......这似乎应该是一个如此简单的问题,但我一直在寻找......如果这在某个地方被很好地覆盖,我深表歉意,我有只是错过了它,我花了最后 4 个小时在网上搜索,试图找到修复方法!

无论如何,我们将不胜感激!

谢谢。

最佳答案

Malachi 的链接为您指明了正确的方向。只缺少一个微小的细节。Cursor 有一个 getPosition() 方法,它返回游标在行集中的位置。将该值存储在您的 ViewHolder 中,一切就绪:

holder.position = c.getPosition();

在您的 OnClickListener 中检索 ViewHolder 及其包含的位置:

ViewHolder holder = (ViewHolder) v.getTag();
int position = holder.position;

位置可用于检索基础数据:

Object myData = getItem(position);

关于java - 使用按钮上的 OnClickListener 返回 Android 列表中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16638817/

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