android listview适配器引发异常
我为包含图像、文本视图和文本框的listview_项构建了一个适配器,我不知道为什么应用程序会抛出异常android listview适配器引发异常,android,android-listview,android-adapter,android-adapterview,Android,Android Listview,Android Adapter,Android Adapterview,我为包含图像、文本视图和文本框的listview_项构建了一个适配器,我不知道为什么应用程序会抛出异常 class RestaurantAdapter extends BaseAdapter { private static LayoutInflater inflater = null; private ArrayList<HashMap<String, String>> data; Activity activity; public R
class RestaurantAdapter extends BaseAdapter {
private static LayoutInflater inflater = null;
private ArrayList<HashMap<String, String>> data;
Activity activity;
public RestaurantAdapter(Activity activity,
ArrayList<HashMap<String, String>> data) {
// TODO Auto-generated constructor stub
this.activity = activity;
this.data = data;
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return data.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View vi = convertView;
if (vi == null)
inflater.inflate(R.layout.restaurant_multi_select_list_item, null);
TextView name = (TextView) vi
.findViewById(R.id.restaurant_multi_select_title);
ImageView image = (ImageView) vi
.findViewById(R.id.restaurant_multi_select_list_item_image);
CheckBox cb = (CheckBox) vi
.findViewById(R.id.restaurant_multi_select_checkBox);
HashMap<String, String> restaurant = data.get(position);
name.setText(restaurant.get("name"));
cb.setSelected(false);
image.setId(Integer.parseInt(restaurant.get("image")));
return vi;
}
}
它仍然抛出异常
如果你想要其他代码,我会给你的
谢谢
编辑
例外情况
01-23 19:45:27.021: E/AndroidRuntime(24106): FATAL EXCEPTION: main
01-23 19:45:27.021: E/AndroidRuntime(24106): java.lang.NullPointerException
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.widget.AbsListView.obtainView(AbsListView.java:1521)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.widget.ListView.makeAndAddView(ListView.java:1749)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.widget.ListView.fillDown(ListView.java:674)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.widget.ListView.fillFromTop(ListView.java:731)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.widget.ListView.layoutChildren(ListView.java:1602)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.widget.AbsListView.onLayout(AbsListView.java:1349)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.view.View.layout(View.java:7320)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1263)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1137)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.widget.LinearLayout.onLayout(LinearLayout.java:1051)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.view.View.layout(View.java:7320)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.widget.FrameLayout.onLayout(FrameLayout.java:342)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.view.View.layout(View.java:7320)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1263)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1137)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.widget.LinearLayout.onLayout(LinearLayout.java:1051)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.view.View.layout(View.java:7320)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.widget.FrameLayout.onLayout(FrameLayout.java:342)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.view.View.layout(View.java:7320)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.view.ViewRoot.performTraversals(ViewRoot.java:1162)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.view.ViewRoot.handleMessage(ViewRoot.java:1882)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.os.Handler.dispatchMessage(Handler.java:99)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.os.Looper.loop(Looper.java:130)
01-23 19:45:27.021: E/AndroidRuntime(24106): at android.app.ActivityThread.main(ActivityThread.java:3701)
01-23 19:45:27.021: E/AndroidRuntime(24106): at java.lang.reflect.Method.invokeNative(Native Method)
01-23 19:45:27.021: E/AndroidRuntime(24106): at java.lang.reflect.Method.invoke(Method.java:507)
01-23 19:45:27.021: E/AndroidRuntime(24106): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
01-23 19:45:27.021: E/AndroidRuntime(24106): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624)
01-23 19:45:27.021: E/AndroidRuntime(24106): at dalvik.system.NativeStart.main(Native Method)
新的例外
我想
vi = inflater.inflate(R.layout.restaurant_multi_select_list_item, null);
如果
vi==null
则必须将充气机设置为vi
。否则,您将尝试从零或null
比如说
if (vi == null)
vi = inflater.inflate(R.layout.restaurant_multi_select_list_item, null);
发布LogCat以便我们可以帮助解决哪个异常?我在你的帖子中看不到任何内容…非常感谢,+1代表你,我接受Mistsuaki的回答,因为他先回答我,同样的例外?如果没有发布新的one@tyczjj我发布了一个新的例外,即值
restaurant
为null(但如果它通过restaurant.get(“name”)
它可能不是),或者“image”的数据为null或不正确,很难从给出的内容中分辨出来,在那里设置一个断点,在将图像值传递到ImageView
之前查看图像值。您可以访问窗口中的所有视图>显示视图并选择您想要的视图。它可以正常工作,但当我尝试滚动项目时,我遇到了一个异常,为什么?请告诉我您的堆栈跟踪?(例外)谢谢!您能给我看看Select_Multi_Restaurants.java的第133行吗?没有133行:),它只是119行,可能与您的问题无关。*如果vi(=convertView)不是null…,会发生什么情况?*每次分配每个列表项数据时,都会调用findViewById。这不是更快的ListView。查看以下URL?('ω`)
vi = inflater.inflate(R.layout.restaurant_multi_select_list_item, null);
if (vi == null)
vi = inflater.inflate(R.layout.restaurant_multi_select_list_item, null);