gpt4 book ai didi

Android:包含自定义行和调用 ContextMenu 的 ListActivity

转载 作者:行者123 更新时间:2023-11-30 04:41:52 25 4
gpt4 key购买 nike

我在 LitsActivity 中有一个 ListView,它由从单独的 XML 文件扩充的行组成。这些行由我为此 ListView 的自定义适配器中的 convertView 方法填充。我试图在每一行上调用上下文菜单。通常,我们通过调用

registerForContextMenu(ourListViewInstance);

onCreate 方法中。但这对我不起作用,onCreateContextMenu 方法没有被调用,因为此时没有列表行,它们稍后出现。我试着用

registerForContextMenu(行);

在我的自定义列表适配器的 getView 方法中,以便每一行都注册为“长按”并且它有效,但由于某些原因它是 Not Acceptable 并且需要通常的方法。

这是我的 ItemsAdapter,它创建 ListView 行的实例:

class ItemsAdapter extends ArrayAdapter<ItemsModel> {

public ItemsAdapter(ArrayList<ItemsModel> list) {
super(Items.this, R.layout.custom_row_view, list);
}

private ItemsModel getModel(int position) {
return (((ItemsAdapter) itemsList.getAdapter()).getItem(position));
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;

final ItemsModel currentItemModel = getModel(position); // Model class storing data for all the rows.
ItemsResourceManager resourceManager = null; // class used to easily get and set row views.

if (row == null) {
row = View.inflate(getBaseContext(), R.layout.custom_row_view, null);
row.setClickable(true);
row.setFocusable(true);
row.setBackgroundResource(android.R.drawable.menuitem_background);
resourceManager = new ItemsResourceManager(row);
row.setTag(resourceManager);
} else {
resourceManager = (ItemsResourceManager) row.getTag(); //class used to easily get and set row views.
}
registerForContextMenu(row); // works for each separate LisView row

//... skipped setText actions for this row
}
return row;
}
}

我还尝试从任何可聚焦元素中完全清除我的 custom_row_view.xml,但没有帮助。

最佳答案

问题出在我的自定义适配器类中的 onClickListener 中。它阻止了 contextMenu 处理,因为每次都会调用“短”单击。现在,clickListener 和 ContextMenu 处理程序都位于 ListActivity 类中,并且工作正常。

关于Android:包含自定义行和调用 ContextMenu 的 ListActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5848482/

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