如何正确调用setListAdapter

时间:2013-08-04 17:29:02

标签: android

我已经搜索过如何解决这个问题,但我没有得到任何结果。我需要的唯一帮助是,请看看stackoverflow和回答上提出的这个问题;

这是来自this链接的问题:

“我的活动没有扩展ListActivity所以这行会抛出一个错误.setListAdapter(fileList);它应该填充listview ...”

    ArrayAdapter<String> fileList =
            new ArrayAdapter<String>(this, R.layout.row, item);
setListAdapter(fileList);

这个问题的答案是:

使用ListView获取findViewById(int)的引用。然后使用适配器作为参数调用该引用上的方法ListView.setAdapter(ListAdapter)

现在这是我的代码:

ArrayAdapter<String> adapter =
     new ArrayAdapter<String>(this, R.layout.reminder_row, R.id.text1, items);

    setListAdapter(adapter); 

}

考虑到Q / A,有人可以解释我是如何以正确的方式编写的。非常感谢任何帮助。

4 个答案:

答案 0 :(得分:16)

如链接问题和本问题的评论中所述,它是这样的:

ArrayAdapter<String> adapter =new ArrayAdapter<String>(this, R.layout.reminder_row, R.id.text1, items);
ListView lv = (ListView)findViewById(R.id.your_listview_id);
lv.setAdapter(adapter);

ListActivity是一个专门的Activity,它托管ListView并且有一些方便的方法来访问和操作它。但是,没有什么可以阻止您在非ListView ListActivity中使用Activity,您只是失去了便利方法,并且必须自己编写更多代码,如上所述。

答案 1 :(得分:2)

laalto是正确的,但您也可以在当前活动中扩展ListActivity。

public class YourListActivityClass extends ListActivity {
    private ArrayAdapter<String> adapter;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        adapter = new ArrayAdapter<String>(this, R.layout.reminder_row, R.id.text1, items);
        setListAdapter(adapter); 
    }
}

答案 2 :(得分:2)

我们可以在AppCompatActivity中执行listview

String[] one = {"dsk", "jskj", "ddd", "dld"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_row, R.id.list_row_name, one);
ListView listView = (ListView) findViewById(R.id.listView);
listView.setAdapter(adapter);

答案 3 :(得分:0)

setListAdapter未定义,因为ReminderListActivity不扩展ListActivity。因此,要解决此问题,您需要扩展ListActivity。