请教android高手,帮我检查下代码,我不知道为什么报空指针?
MyAdapteradapter=newMyAdapter(this);menugrid=(GridView)this.findViewById(R.id.menugri...
MyAdapter adapter = new MyAdapter(this);
menugrid = (GridView)this.findViewById(R.id.menugrid);
menugrid.setAdapter(adapter);
menugrid.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
String info = menugrid.getItemAtPosition(arg2).toString();
Toast.makeText(MenuList.this, "Delete " + info, 1).show();
}
});
MyAdapter 和 getview 都是重写过的,gridview显示也正常,就是点击时menugrid.getItemAtPosition(arg2)会报空指针<map</map 展开
menugrid = (GridView)this.findViewById(R.id.menugrid);
menugrid.setAdapter(adapter);
menugrid.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
String info = menugrid.getItemAtPosition(arg2).toString();
Toast.makeText(MenuList.this, "Delete " + info, 1).show();
}
});
MyAdapter 和 getview 都是重写过的,gridview显示也正常,就是点击时menugrid.getItemAtPosition(arg2)会报空指针<map</map 展开
4个回答
展开全部
MyAdapter adapter = new MyAdapter(this);
创建 MyAdapter 没有传入一个你初始化的List,是不是 Adapter类中已经有你自己初始化的一个List用来显示到GridView,一般都会传入一个某个数据类型的List。例如:
ArrayList<String> list = new ArrayList<String>();
list.add("A");
MyAdapter adapter = new MyAdapter(this, list);
麻烦附上log看一下
创建 MyAdapter 没有传入一个你初始化的List,是不是 Adapter类中已经有你自己初始化的一个List用来显示到GridView,一般都会传入一个某个数据类型的List。例如:
ArrayList<String> list = new ArrayList<String>();
list.add("A");
MyAdapter adapter = new MyAdapter(this, list);
麻烦附上log看一下
追问
HashMap items = (HashMap) dataList.get(arg2);
Toast.makeText(MenuList.this, "Delete " + items.get("foodname"), 1).show();
点击事件中,直接从dataList里取当前点击的值,这种写法合适吗?
追答
这样写就和Adapter没有了关系,
String info = menugrid.getItemAtPosition(arg2).toString();
改为:String info = arg0.getItemAtPosition(arg2).toString();
MyAdapter类中改写getItem方法,返回你的数据表的position
展开全部
@Override 这行去掉试试。
话说我很久没写android程序了,话说空指针的话加个断点,看看堆栈什么的,应该是比较容易解决的。我没记错的话是那个debug小虫子。
有可能的话最好给点调试信息截图。以及堆栈调用情况。
话说我很久没写android程序了,话说空指针的话加个断点,看看堆栈什么的,应该是比较容易解决的。我没记错的话是那个debug小虫子。
有可能的话最好给点调试信息截图。以及堆栈调用情况。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你的设置Adapter的List里面的参数值类型不对啊。因为如果你是往List传入<map>,那么你get到的也是一个map值,而不是String类型。所以你不能直接获取,因为它找不到那个字符串啊。
追问
long item = arg0.getItemIdAtPosition(arg2)
那item也是报空指针,是什么原因啊?
我该怎么获得当前点击项的值呢
追答
把toString去掉 因为你获取的不是String类型 然后再强转
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Object obj=arg0.getItemAtPosition(arg2);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询