【问题标题】:Error displaying a list with Listview使用 Listview 显示列表时出错
【发布时间】:2014-05-28 15:48:02
【问题描述】:

我在 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));

有人可以帮我吗?

【问题讨论】:

  • List list 已经是个问题了。使用泛型。
  • R.layout.view_presentation 看起来像什么?你可能需要在你的ArrayAdapter 中实现getView()

标签: java android android-studio


【解决方案1】:

至少有两个问题:

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

所以:

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

【讨论】:

  • @user3659691 我正在编辑问题:) 现在怎么样?如果它不起作用,请编辑问题并发布编译器错误。否则很难找到问题
  • "ArrayAdapter的type参数必须是item类型,所以本例应该是ArrayAdapter"
  • @matiash 在 logcat 中它没有给我错误.. 只显示查询(用于 exp. SELECT * FROM 演示文稿)。此查询由 getAllPresentations() 方法生成。现在我想在其他 java 类文件中显示此查询的列表。但它不显示任何内容。 :(
  • @user3659691 你确定查询正在返回数据吗?
猜你喜欢
  • 1970-01-01
  • 2015-10-03
  • 2012-06-24
  • 2016-05-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-27
  • 2019-12-02
  • 2017-02-17
相关资源
最近更新 更多