相关疑难解决方法(0)

检测哪个选定项(在ListView中)产生了ContextMenu(Android)

我有一个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)

但这对我来说感觉很重要.有没有人有更好的解决方案呢?

android listview contextmenu

56
推荐指数
2
解决办法
6万
查看次数

处理项目长按回收者视图

我有一个自定义a的适配器,recyclerView我想在项目的长按事件上打开一个弹出菜单recyclerView.我怎样才能做到这一点?

android onlongclicklistener android-recyclerview

32
推荐指数
3
解决办法
5万
查看次数

ViewPager中的错误片段接收onContextItemSelected调用

我有一个应用程序,在a中显示一些片段(相同类型)ViewPager,我在上下文菜单项中遇到了一些问题.(我正在使用支持库).

当在其中一个片段的上下文菜单中选择了上下文菜单项时,错误的片段正在接收onContextItemSelected事件调用.

例如,如果我在寻呼机中的片段#3上,则位置#2处的片段接收它.如果我滑回到片段#2,则片段#3接收该呼叫.

我在这里有样品.

(我现在正在我自己的应用程序中解决这个问题,方法是mHandleContext在每个片段中都有一个变量,并在页面更改时启用/禁用它.这样,onContextItemSelected调用将会发送到所有片段,直到调用正确的片段.)

我做错了什么或这是支持库的错误?作为旁注,我在使用ActionBarSherlock 3.5.1时没有发生这种情况,ActionBarSherlock 3.5.1有自己的支持库分支.

android android-support-library

25
推荐指数
2
解决办法
4565
查看次数

CardView中的工具栏创建一个弹出菜单(溢出图标)

我有一个列表,看起来像带有cardview的recyclerview中的谷歌播放,并且工作完美.

我需要添加一个弹出菜单(带溢出图标),如下所示:

这是最好的方法吗?

我研究发现有两种选择:

1 - 在cardview布局中有一个工具栏.这个解决方案有一个性能问题吗?

2 - 带有带溢出图标的图像按钮或图像视图,即单击菜单时创建.

我需要一个与> = API 10兼容的解决方案

谢谢

android material-design android-cardview android-toolbar android-recyclerview

18
推荐指数
2
解决办法
2万
查看次数

OnCreateContextMenu和ListView项

我有一个带有几个项目的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的元素?

android contextmenu arraylist android-listview

6
推荐指数
3
解决办法
3万
查看次数

获取在RecycleView中选择的ContextMenu的位置

通常情况下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

4
推荐指数
1
解决办法
2384
查看次数

AdapterContextMenuInfo始终为null

我尝试通过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)

onCreateContextMenuonContextItemSelected几乎完全按照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)

唯一真正独特的是我有一个列表项的自定义布局(即几个文本字段和一个图像).我需要做些什么才能获得为其构建上下文菜单的列表项的索引?

android

3
推荐指数
1
解决办法
4712
查看次数

ContextMenu中包含RecyclerView和Cardview

我想在recyclerview的cardview项目上有一个上下文菜单.

如何为RecyclerView创建上下文菜单并没有真正提供解决方案.

我可以在ViewHolder上创建一个OnClickListener和一个OnLongClickListener.我也可以放入一个OnCreateContextMenu,但是从不调用onCreateContextMenu.

任何人都可以提供一个例子吗?

android contextmenu android-recyclerview

2
推荐指数
1
解决办法
1万
查看次数

如何在 firebaseui 提供的 recyclerview 项目上使用上下文菜单

我想知道如何在 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

2
推荐指数
1
解决办法
5589
查看次数