在ListView适配器中,通过按钮点击显示上下文菜单

3
我在一个ListView上有一个按钮,当我点击这个按钮时,我想显示在我的布局中定义的上下文菜单。
问题是registerForContextMenu方法不被customerlistadapter识别。上下文菜单方法onCreateContextMenuonContextItemSelected在显示ListView的活动中被覆盖。
    @Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.customforumview, null);
        holder = new ViewHolder();
        holder.txtTitle = (TextView) 
        convertView.findViewById(R.id.forumtitle);
        holder.txtCategory = (TextView)
        convertView.findViewById(R.id.forumcategory);
        holder.menubutton = (ImageButton)
        convertView.findViewById(R.id.menuselect);

        holder.menubutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               //context menu to be called here 
            }
        });
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }
    holder.txtTitle.setText(searchArrayList.get(position).getTitle());
    holder.txtCategory.setText(searchArrayList.get(position).getCategory());

    return convertView;
}
1个回答

4

如果您在Activity中正确注册了contextMenu,您可以使用以下方式调用contextMenu:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ...
    holder.menubutton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //context menu to be called here
            parent.showContextMenuForChild(v); 
        }
    ...
});

如果您想访问在您的活动中调用的元素,请像这样在您的onCreateContextMenu中添加:
@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);

  AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
  long itemID = info.position;
  menu.setHeaderTitle("lior" + itemID);
}

请参考@Lior Iluz的答案以获取更多信息。
希望这可以帮助您!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接