Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单击项目时,在listview中选择不同的元素_Java_Android - Fatal编程技术网

Java 单击项目时,在listview中选择不同的元素

Java 单击项目时,在listview中选择不同的元素,java,android,Java,Android,我有一个带有自定义适配器的列表视图、一个图像按钮和一个文本视图 我想在按下图像按钮时打开一个关联菜单,如果按下文本视图,则打开另一个关联菜单 我该怎么做 这是我的听众 lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if

我有一个带有自定义适配器的列表视图、一个图像按钮和一个文本视图

我想在按下图像按钮时打开一个关联菜单,如果按下文本视图,则打开另一个关联菜单

我该怎么做

这是我的听众

lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            if (id == view.findViewById(R.id.label).getId()) //label press
            {
                TextView text = (TextView) view.findViewById(R.id.label);
                registerForContextMenu(text);
                openContextMenu(text);
            }
            else //imageButton press
            {
                ImageButton ib= (ImageButton) view.findViewById(R.id.image);
                registerForContextMenu(ib);
                openContextMenu(ib);
            }
         }
       });
lv.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
if(id==view.findViewById(R.id.label).getId())//标签按
{
TextView text=(TextView)view.findViewById(R.id.label);
registerForContextMenu(文本);
openContextMenu(文本);
}
其他//图像按钮按下
{
ImageButton ib=(ImageButton)view.findViewById(R.id.image);
registerForContextMenu(ib);
openContextMenu(ib);
}
}
});

将OnCreateContextMenuListener添加到视图中:

    text.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
            @Override
            public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo info) {
                menu.setHeaderTitle("Text context menu");
                menu.add(ContextMenu.NONE, MY_OPTION_CONTEXT_MENU, ContextMenu.NONE, "Some option");
            }
        });
在活动视图中:

@Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();

    switch(item.getItemId()) {
        case MY_OPTION_CONTEXT_MENU:
            TextView v = (TextView) info.targetView;
            // more code here
            return true;
    }

    return super.onContextItemSelected(item);
}

谢谢此外,您还可以在创建视图时,使用customAdapter在“getView”中添加侦听器
public View getView(int position, View convertView,
                            ViewGroup parent) {
        LayoutInflater inflater=getLayoutInflater();
        View row=inflater.inflate(R.layout.row_listview_with_icon, parent,  false);
        TextView label=(TextView)row.findViewById(R.id.label);

        ImageView icon=(ImageView)row.findViewById(R.id.icon);

        final int m_pos = position;
                    label.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                ...             
            }
        });
        icon.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                ...             
            }
        });

        return(row);
    }