因此,我有兴趣在长按每个列表项时为其创建自定义上下文菜单。我在Baconreader应用程序中看到了这个,并认为它会像下面那样简单:
我成功地设法隐藏列表项onItemLongClick,但事实证明你不能将视图添加到ListView(d'oh)。但这必须是培根重建者做到这一点的方式。我无法弄清楚。这是我尝试的一些代码:
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0,
View arg1, int arg2, long arg3) {
arg1.setVisibility(View.GONE); // hide the list item, works
// trying to add a TextView after a list
// item's position, doesn't work.
listView.addView(textView, arg2);
return true;
}
});
以下是一个示例:
因此隐藏了列表项,并且自定义上下文菜单(看起来像ViewGroup)直接放在列表项的位置上。但是如何?
list_item.xml
<TextView
android:id="@+id/list_item_title"
.....
/>
</FrameLayout>
java代码
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0,
View arg1, int arg2, long arg3) {
((FrameLayout)arg1).addView(w);
return true;
}
});
当然,您必须使用SimpleAdapter而不是ArrayAdapter。
答案 0 :(得分:2)
快速提示:如果您不隐藏列表项并将上下文菜单添加到列表中,而是将上下文菜单添加到列表项中,该怎么办?
例如,将列表项的当前布局包装到FrameLayout中。然后,当长按时,只需将上下文菜单添加到此FrameLayout中? (如果需要,隐藏FrameLayout的第一个子节点)。这也可以保证上下文菜单与列表项具有相同的大小。