我有一个ListView,允许用户长按项目以获取上下文菜单.我遇到的问题是确定ListItem他们长期压迫的问题.我试过这样做:
myListView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
@Override public void onCreateContextMenu(ContextMenu menu, final View v, ContextMenuInfo menuInfo) {
menu.add("Make Toast")
.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override public boolean onMenuItemClick(MenuItem item) {
String toastText = "You clicked position " + ((ListView)v).getSelectedItemPosition();
Toast.makeText(DisplayScheduleActivity.this, toastText, Toast.LENGTH_SHORT).show();
return true;
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
但它只是挂起,直到ANR弹出.我怀疑创建菜单后ListItem不再选择.
看起来您可以监控点击或长按,然后在那里记录点击的项目:
mArrivalsList.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
// record position/id/whatever here
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
但这对我来说感觉很重要.有没有人有更好的解决方案呢?
我有一个自定义a的适配器,recyclerView我想在项目的长按事件上打开一个弹出菜单recyclerView.我怎样才能做到这一点?
我有一个应用程序,在a中显示一些片段(相同类型)ViewPager,我在上下文菜单项中遇到了一些问题.(我正在使用支持库).
当在其中一个片段的上下文菜单中选择了上下文菜单项时,错误的片段正在接收onContextItemSelected事件调用.
例如,如果我在寻呼机中的片段#3上,则位置#2处的片段接收它.如果我滑回到片段#2,则片段#3接收该呼叫.
我在这里有样品.
(我现在正在我自己的应用程序中解决这个问题,方法是mHandleContext在每个片段中都有一个变量,并在页面更改时启用/禁用它.这样,onContextItemSelected调用将会发送到所有片段,直到调用正确的片段.)
我做错了什么或这是支持库的错误?作为旁注,我在使用ActionBarSherlock 3.5.1时没有发生这种情况,ActionBarSherlock 3.5.1有自己的支持库分支.
我有一个列表,看起来像带有cardview的recyclerview中的谷歌播放,并且工作完美.
我需要添加一个弹出菜单(带溢出图标),如下所示:
这是最好的方法吗?
我研究发现有两种选择:
1 - 在cardview布局中有一个工具栏.这个解决方案有一个性能问题吗?
2 - 带有带溢出图标的图像按钮或图像视图,即单击菜单时创建.
我需要一个与> = API 10兼容的解决方案
谢谢
android material-design android-cardview android-toolbar android-recyclerview
我有一个带有几个项目的LisView.为此我连接了OnItemClickListener(作为内部类),如下所示:
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(ShoppingListApp02Activity.this, "List item selected:" +
items.get(position).getId(), Toast.LENGTH_LONG).show();
}
});
Run Code Online (Sandbox Code Playgroud)
很明显,选择一个entriy会显示该条目对象的元素,在本例中是所选Item对象的ID(不是列表ID,而是创建ArrayList项时设置的对象ID).这很好用,让我可以用选定的项目做任何我想做的事情.
现在我想要一个"长按"监听器,打开所选ListView项的上下文菜单.我怎么做?我已经能够将一个onCreateContextMenu监听器附加到ListView,但是我没有看到如何使用onItemClickListener获取ArrayList的元素?
这是我得到的:
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
menu.add(0, v.getId(), 0, "Something");
menu.add(0, v.getId(), 0, "Something else");
}
Run Code Online (Sandbox Code Playgroud)
由于OnCreateConextMenu采用与OnItemClickListener不同的参数,如何在OnItemClickListener中访问ArrayList的元素?
通常情况下ListViews,当我想获得用户点击上下文菜单的位置时,我会这样做.
public boolean onContextItemSelected(android.view.MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
position = info.position;
Run Code Online (Sandbox Code Playgroud)
但是,自从我切换到a后RecycleView,我现在在这里得到一个空指针.
上面的代码是在我的主要Activity(Fragment),而onCreateContextMenu()在做adapter,按新的方式.
ItemView.setOnCreateContextMenuListener(this); 也在适配器(特别是构造函数)中完成.
android contextmenu nullpointerexception adapter android-recyclerview
我尝试通过android dev docs的书来做到这一点:
// this didn't create a menu, i don't know why
//registerForContextMenu(getListView());
setListAdapter(new ArrayAdapter<Note>(this, R.layout.selectset_listitem) {
@Override
protected View getView(...) {
... custom layout ...
// this creates a menu, but...
registerForContextMenu(convertView);
return convertView;
}
}
Run Code Online (Sandbox Code Playgroud)
而onCreateContextMenu和onContextItemSelected几乎完全按照http://developer.android.com/guide/topics/ui/menus.html#context-menu.
这是它在文档(和我的代码)中的样子:
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
}
Run Code Online (Sandbox Code Playgroud)
但这部分总是给我一个空信息:
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
...
}
Run Code Online (Sandbox Code Playgroud)
唯一真正独特的是我有一个列表项的自定义布局(即几个文本字段和一个图像).我需要做些什么才能获得为其构建上下文菜单的列表项的索引?
我想在recyclerview的cardview项目上有一个上下文菜单.
如何为RecyclerView创建上下文菜单并没有真正提供解决方案.
我可以在ViewHolder上创建一个OnClickListener和一个OnLongClickListener.我也可以放入一个OnCreateContextMenu,但是从不调用onCreateContextMenu.
任何人都可以提供一个例子吗?
我想知道如何在 FirebaseUI 提供的 recyclerview 项目中放置上下文菜单,并且能够在知道长按哪个项目的情况下执行一些操作。因为当我尝试在我的持有者类上使用 onCreateContextMenu 时,我的 ContextMenuInfo 带有空值。这是我的持有人课程:
public class PlayerHolder extends RecyclerView.ViewHolder implements View.OnCreateContextMenuListener {
//private static final String TAG = PlayerHolder.class.getSimpleName();
public TextView playerName;
public TextView playerAge;
public PlayerHolder(View itemView) {
super(itemView);
playerName = (TextView) itemView.findViewById(R.id.player_name);
playerAge = (TextView) itemView.findViewById(R.id.player_age);
itemView.setOnCreateContextMenuListener(this);
}
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
menu.add(0, 1, 0, "Edit");//groupId, itemId, order, title
menu.add(0, 2, 0, "Share");
menu.add(0, 3, 0, "Delete");
}
//@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView …Run Code Online (Sandbox Code Playgroud) android android-contextmenu navigation-drawer android-recyclerview firebaseui