将适配器设置为listView

时间:2016-07-12 03:08:29

标签: java android

我的代码如下:

public class EventActivity extends AppCompatActivity {
        ListView listView;
        ItemAdapter adapter;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.attaction_list);

            ArrayList<Item> items = new ArrayList<>();
            items.add(new Item("a", "a", a));
            items.add(new Item("b", "b", b));
            items.add(new Item("c", "c", c));

            adapter = new ItemAdapter(this, items, R.color.event);
            listView = (ListView) findViewById(R.id.list);
            if(adapter != null) {
                listView.setAdapter(adapter);
            }
        }
    }

Andoid Studio编辑器指示listView.setAdapter(adapter)可能导致nullpointer异常。任何人都可以解释这个警告来自何处以及如何解决它?

1 个答案:

答案 0 :(得分:0)

如果您查看开发人员文档:https://developer.android.com/reference/android/app/Activity.html#findViewById(int)

  

<强> findViewById

     

View findViewById (int id)

     

查找由XML中的id属性标识的视图   在onCreate(Bundle)处理。

     

Parameters

     

id int

     

Returns

     

查看     视图如果找到,否则为null

该警告来自

所以你看到listView执行后变量listView = (ListView) findViewById(R.id.list);可能为空。所以你得到了警告!

如何修复

您可以在if条件中提供null检查表达式,如下所示:

if(adapter != null && listView !=null ) {
    listView.setAdapter(adapter);
}