为什么item.getMenuInfo()为null? [英] Why is item.getMenuInfo() null?
本文介绍了为什么item.getMenuInfo()为null?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在ListVeiw项目中,我有4-8个ImageView(其中一些是不可见的,取决于某些值)和4个TextView.
Within my ListVeiw item I have 4-8 ImageView(some of them are invisible depended of some value) and 4 TextView.
当我长按一下Listview的项目时,(AdapterContextMenuInfo)item.getMenuInfo()返回null.
When I Long click to item of Listview the (AdapterContextMenuInfo) item.getMenuInfo() returns me null.
在我的适配器中,我定义了以下方法:
In my adapter I have defined the following methods:
public int getCount() {
return NewList.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public void Remove(int id){
notifyDataSetChanged();
}
public View getView(int position, View convertView, ViewGroup parent){
View vi=convertView;
NewsFeedHolder holder;
News n= NewList.get(position);
List<NewsItem> items = n.getNewsItems();
int ItemsLen = items.size();
if (convertView == null){
vi = inflater.inflate(R.layout.newsfeed_item, null);
holder=new NewsFeedHolder();
holder.txtTitle = (TextView)vi.findViewById(R.id.newsfeed_item_name);
holder.avatar_image = (ImageView)vi.findViewById(R.id.newsfeed_item_icon);
holder.txtUpdate = (TextView)vi.findViewById(R.id.newsfeed_item_update);
holder.txtLike = (TextView)vi.findViewById(R.id.newsfeed_item_like);
holder.txtDisLike = (TextView)vi.findViewById(R.id.newsfeed_item_dislike);
holder.btnLike = (ImageButton)vi.findViewById(R.id.newsfeed_like_button) ;
holder.btntxtDisLike = (ImageButton)vi.findViewById(R.id.newsfeed_dislike_button);
holder.imgItemIcon1 = (ImageView)vi.findViewById(R.id.newsfeed_item_icon1);
holder.imgItemIcon2 = (ImageView)vi.findViewById(R.id.newsfeed_item_icon2);
holder.imgItemIcon3 = (ImageView)vi.findViewById(R.id.newsfeed_item_icon3);
holder.btnLike.setOnClickListener(activity.OnLikeClickListener);
holder.btntxtDisLike.setOnClickListener(activity.OnDisLikeOnClickListener);
vi.setTag(holder);
}
else {
holder=(NewsFeedHolder)vi.getTag();
}
imageLoader.DisplayImage(n.getUserAvatarUrl(), activity, holder.avatar_image);
String url1,url2,url3;
try{
switch(ItemsLen){
case 1:
url1 = n.getNewsItems().get(0).getItemUrl();
imageLoader.DisplayImage(url1, activity, holder.imgItemIcon1);
break;
case 2:
url1 = n.getNewsItems().get(1).getItemUrl();
imageLoader.DisplayImage(url1, activity, holder.imgItemIcon1);
url2 = n.getNewsItems().get(1).getItemUrl();
imageLoader.DisplayImage(url2, activity, holder.imgItemIcon2);
break;
case 3:
url1 = n.getNewsItems().get(2).getItemUrl();
imageLoader.DisplayImage(url1, activity, holder.imgItemIcon1);
url2 = n.getNewsItems().get(2).getItemUrl();
imageLoader.DisplayImage(url2, activity, holder.imgItemIcon2);
url3 = n.getNewsItems().get(2).getItemUrl();
imageLoader.DisplayImage(url3, activity, holder.imgItemIcon3);
break;
default:
}
}
catch(Exception e){
Log.i("adaptex",e.getMessage());
}
holder.txtTitle.setText(n.getNewsTitle());
holder.txtUpdate.setText(n.getUpdate());
holder.txtLike.setText(Integer.toString(n.getLike()));
holder.txtDisLike.setText(Integer.toString(n.getDesLike()));
activity.registerForContextMenu(vi);
vi.setOnClickListener(activity.OnListItemClickListener);
return vi;
}
当我尝试获取item.getMenuInfo()
时,收到空值.
And when I attempt to get item.getMenuInfo()
, I receive null.
推荐答案
您需要注册上下文菜单的列表,而不是项目.
You need to register the list for context menu, not the items.
// wrong:
activity.registerForContextMenu(vi);
// right:
activity.registerForContextMenu(myList);
这篇关于为什么item.getMenuInfo()为null?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文