使用Listview显示列表时出错

时间:2014-05-28 15:48:03

标签: java android android-studio

我在 DatabaseHelper.java 类中有一个公共方法,如下所示:

public List<Presentation> getAllPresentations() {
    List<Presentation> presentations = new ArrayList<Presentation>();
    //
    //
    // some code
    //
    //
    return presentations;
}

在我的 MainActivity.java 中,我添加了以下行:

btnLoad.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            List list = db.getAllPresentations();

            ListView l;

            l=(ListView)findViewById(R.id.list);
            l.setAdapter(new ArrayAdapter<List>(this,R.layout.view_presentation, list));
        }
    });

但是,有些问题就行了:

l.setAdapter(new ArrayAdapter<List>(this,R.layout.view_presentation, list));

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

至少有两个问题:

  1. 在匿名内部类(如new View.OnClickListener())的上下文中,this指的是内部类的实例。 ArrayAdapter构造函数需要Context,因此您必须使用MainActivity.this
  2. ArrayAdapter<T>的类型参数必须是项类型。所以在这种情况下,它应该是ArrayAdapter<Presentation>
  3. 所以:

        List<Presentation> list = db.getAllPresentations();
        ListView l = (ListView)findViewById(R.id.list);
        l.setAdapter(new ArrayAdapter<Presentation>(MainActivity.this, R.layout.view_presentation, list));