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);
}