你好,我有一个带有slidetab的活动,一个viewpager,在viewpager里面我以编程方式添加Listviews
myVp = (android.support.v4.view.ViewPager) findViewById(R.id.mainviewpager);
myVp.setClickable(false);
pages = new Vector<View>();
int i = 0;
for (LinkedList<Channel> cEvent : pagine) {
final ListView mList = new ListView(this);
mList.setDividerHeight(5);
pages.add(i, mList);
i++;
}
CustomMainPagerAdapter adapter = new CustomMainPagerAdapter(this, pages, mGruppi);
myVp.setPageTransformer(true, new ZoomOutPageTransformer());
myVp.setAdapter(adapter);
int j = 0;
for (LinkedList<Channel> cEvent : pagine) {
CustomAdapter mCadapter = new CustomAdapter(this, R.layout.line_item, cEvent);
final ListView mV = (ListView) pages.get(j);
mV.setAdapter(mCadapter);
registerForContextMenu(mV);
mV.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long arg3) {
if (showMenu) {
mV.showContextMenuForChild(view);
} else {
Channel cPlay = (Channel) mV.getItemAtPosition(position);
String file = cPlay.getmLink();
if (!file.equalsIgnoreCase("NONE")) {
sendLink(file);
}
}
});
j++;
}
adapter.notifyDataSetChanged();
mSlidingTabLayout.setDistributeEvenly(true);
mSlidingTabLayout.setViewPager(myVp);
如果showMenu为true,那么当我点击该项时,上下文菜单不显示,但如果showMenu为false,则其他功能正常工作。 所以它似乎不是“OnItemClickListener”的问题,因为它被正确调用,但问题是“showContextMenuForChild”。
我做错了什么或错过了什么?
谢谢
答案 0 :(得分:0)
知道了! 我将mainactivity从单个列表视图更改为具有更多listview的viewpager并检查我在“onCreateContextMenu”上看到的代码我做了一个过滤器来检查列表视图是否是主要的,所以删除“if”构造函数现在一切都是工作正常! 之前
if (v.getId() == R.id.mylist) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_channel, menu);
}
这就是为什么使用新的listview没有创建上下文菜单!
谢谢
答案 1 :(得分:0)
解决了这一个:-) 在我的代码上:
if (showMenu) {
mV.showContextMenuForChild(view);
} else {
Channel cPlay = (Channel) mV.getItemAtPosition(position);
String file = cPlay.getmLink();
if (!file.equalsIgnoreCase("NONE")) {
sendLink(file);
}
我补充说:
myList = mList;
其中myList是一个全局ListView所以每隔一个项目被点击我将它设置为当前的lisview点击,我想要我需要&#34; onContextItemSelected&#34; 通过做
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
selectpos = info.position; // position in the adapter
Channel mChannel = (Channel) myList.getItemAtPosition(selectpos);
: - )