String []与ArrayList一起作为ArrayAdapter的参数

时间:2015-03-25 10:24:17

标签: android-arrayadapter

我能够在编码Base ArrayAdapter时传递String [],如下所示:

    private static String[] myStringArray = {"a","b","c"};

    ArrayAdapter<String> itemsAdapter =
      new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myStringArray);
    ListView lv = (ListView)findViewById(R.id.myListView);
    lv.setAdapter(itemsAdapter);

但是我需要帮助来使用自定义适配器做同样的事情,我在(this,myStringArray)

下得到了波浪形的红色下划线
    MyAdapter myAdapter = new MyAdapter(this, myStringArray);
    ListView view = (ListView) findViewById(R.id.myListView);
    view.setAdapter(myAdapter);

即使我尝试将String []转换为像这样的ArrayList,它仍然会失败:

    List<String> myNewStringArray = Arrays.asList(mystringArray);

我的自定义适配器如下所示:

    public class MyAdapter extends ArrayAdapter<String>{

    public MyAdapter(Context context, ArrayList<String> categories){
        super(context, 0, categories);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {...

谢谢

2 个答案:

答案 0 :(得分:0)

没有你创建的这样的构造函数 - 看there at android documentation。你应该提供构造函数

public MyAdapter(Context context, int resource, ArrayList<String> categories){
    super(context, resource, categories);
} 

并通过MyAdapter myAdapter = new MyAdapter(this, android.R.layout.simple_list_item_1, myStringArray);进行调用。 NullPointerException可能因为没有id == 0的布局而抛出,而ArrayAdapter会查找单个列表元素的布局。

答案 1 :(得分:0)

问题是在setContentView方法中声明的布局文件中引用ListView(获取不存在的ListView)的错误引用。

谢谢