2 annbnncnnd AnnBnnCnnD 于 2013.02.25 11:16 提问

Android - Listview报错

listview显示一张图片,图片来自可拉取的文件夹和标题。但是结果报错。不知道应该怎么解决了?

public class Categories extends Activity {
    ListView EventCategories;
    String CategoryList[] = { "Sinema", "Tiyatro", "Spor Faaliyetleri",
            "Müzik", "Sahne Sanatları" };
    int CategoryImageList[] = { R.drawable.sinema, R.drawable.tiyatro,
            R.drawable.spor, R.drawable.concert, R.drawable.sahnesanatlari };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.category_list);

        EventCategories = (ListView) findViewById(R.id.categorylist);
        final MyAdapter<String> categories = new MyAdapter<String>(this,
                android.R.layout.simple_list_item_1, R.id.categorylist,
                CategoryList);
        EventCategories.setAdapter(categories);

    }

    public class MyAdapter<String> extends ArrayAdapter<String> {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View row = inflater.inflate(R.layout.category_list_item, parent,
                    false); //category list item has an Imageview and a Button

            ImageView icon = (ImageView) findViewById(R.id.categoryimage);
            Button category = (Button) findViewById(R.id.categorybutton);

            category.setText(CategoryList[position]);
            icon.setImageResource(CategoryImageList[position]);

            return row;
        }

        public MyAdapter(Context context, int resource, int textViewResourceId,
                String[] mylist) {
            super(context, resource, textViewResourceId, mylist);
        }
    }
}

报错信息如下,其中44行是category.setText(CategoryList[position]);

02-25 02:46:06.415: E/AndroidRuntime(458): FATAL EXCEPTION: main
02-25 02:46:06.415: E/AndroidRuntime(458): java.lang.NullPointerException
02-25 02:46:06.415: E/AndroidRuntime(458):  at com.example.example.Categories$MyAdapter.getView(Categories.java:44)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.widget.AbsListView.obtainView(AbsListView.java:1315)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.widget.ListView.makeAndAddView(ListView.java:1727)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.widget.ListView.fillDown(ListView.java:652)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.widget.ListView.fillFromTop(ListView.java:709)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.widget.ListView.layoutChildren(ListView.java:1580)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.widget.AbsListView.onLayout(AbsListView.java:1147)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.view.View.layout(View.java:7035)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.view.View.layout(View.java:7035)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.view.View.layout(View.java:7035)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.view.View.layout(View.java:7035)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1045)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.os.Handler.dispatchMessage(Handler.java:99)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.os.Looper.loop(Looper.java:123)
02-25 02:46:06.415: E/AndroidRuntime(458):  at android.app.ActivityThread.main(ActivityThread.java:4627)
02-25 02:46:06.415: E/AndroidRuntime(458):  at java.lang.reflect.Method.invokeNative(Native Method)
02-25 02:46:06.415: E/AndroidRuntime(458):  at java.lang.reflect.Method.invoke(Method.java:521)
02-25 02:46:06.415: E/AndroidRuntime(458):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-25 02:46:06.415: E/AndroidRuntime(458):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-25 02:46:06.415: E/AndroidRuntime(458):  at dalvik.system.NativeStart.main(Native Method)

1个回答

Kill_it
Kill_it   2013.02.25 11:35
已采纳

iconcategory你应该从row中寻找视图:

ImageView icon = (ImageView) row.findViewById(R.id.categoryimage);
Button category = (Button) row.findViewById(R.id.categorybutton);
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Android setAdapter addHeaderView 报错解决方案
报错内容:Cannot add header view to list – setAdapter has already been called1、在sdk <=16的版本中,ListView的addHeaderView()方法是这样的: public void addHeaderView(View v, Object data, boolean isSelectable) { if
ListView绑定适配器空指针问题发生的原因
出错位
Android 根据EditText搜索框 ListView动态显示数据
【完美修复报错,绝对好到爆】 Android 根据EditText搜索框ListView动态显示数据 根据SimpleAdapter创建ListView。简单粗暴
重写ListView解决与ScrollView的冲突
package com.bruce.a123education.UnBussiness.CustomView; import android.content.Context; import android.util.AttributeSet; import android.widget.ListView; /** * Created by Administrator on 2015/11/2
ListView无法执行getView()的几种可能问题
在遇到这个问题过后,在网上翻阅了一些资料,找到了一些思路,一下问题的解释来自一位大神,觉得非常有用,就收藏记录下来。  listview是一个比较常用的控件,为了适应自己需要的效果往往会继承baseadapter去实现自定义的适配器。        在该适配器中出错最多的应该是getview()了。        从接触listview控件开始,第一个报的错就是关于g
ListView数据为空及加载错误处理
在项目中,我们都会用到ListView或GridView等列表控件。一般我们会用来展示从网络请求的数据 。 如果请求的数据为空或者在请求的时候正好无没有网络了,我们的界面应该如何展示呢? 数据为空的时候,ListView可以使用setEmptyView (View emptyView) 方法来我们需要的统一界面。 数据加载失败呢?我们也可以统一进行处理。新年刚上班,任务还没来,所以就简单写写~
Android兼容性问题 -- ListView.addHeaderView()异常
ListView在执行addHeaderView的时候有可能会抛出异常,这里讨论了异常产生的原因及其解决方法。此外还讨论了addFooterView的一些注意事项。
android中初始化listview问题1
android中初始化listview问题1问题: 适配器中getView()重复调用多次问题,是在getcount的基础上多跑了几个周期 关键字 android listview初始化 getview重复加载多次 ListView ListView是Android软件开发中非常重要组件之一,使用频繁。对于上边的问题,大家很有可能遇到但是没有在意而已,下边我们就先看一下这个getview()加载
垃圾的Android-ListView-setEmptyView
我们知道ListView组件提供了一个空数据是的视图设置方法setEmptyView,该方法存在一个诟病,就是空视图和listview组件要在一个Parent中,这个就不在此细说,下面说另一个问题,原因其实和前面那个问题同出一辙。 假如emptyView和listview在布局中,已经属于同一个parent,设置EmptyView的代码如下 private void setEmptyView
[Android异常]listview(含上拉加载,上拉加载)下拉刷新报数组越界异常
场景 1.在安卓开发中,使用带footview或者headView的Listview,且该Listview含固定类型的item; 2.该Listview嵌套了Listview等view 错误内容 :FATAL EXCEPTION: main                                                                      Proce