【问题标题】:Issue while using customized list view with Arraylist将自定义列表视图与 Arraylist 一起使用时出现问题
【发布时间】:2013-03-08 10:21:48
【问题描述】:
    private void dataCollection() {
    ArrayList<BreachHistoryData> responselist = SessionClass.getResponseList();

    listView = (ListView) findViewById(R.id.breachHistoryLstView);
    View header = (View) getLayoutInflater().inflate(R.layout.custom_breach_history_header, null);
    listView.addHeaderView(header);

    for (BreachHistoryData breachHistoryData : responselist) {
        messageView= new MessageView[] { new MessageView(breachHistoryData.getDate(), breachHistoryData.getTime(),breachHistoryData.getBreachNo(),breachHistoryData.getFee(), null) };

    }
    CustomAdapter adapter = new CustomAdapter(this,R.layout.custom_breach_history_items, messageView);
    listView.setAdapter(adapter);

在上面的代码中,我在 responselist 中有大约 100 个值。但是当我尝试 要在我的列表视图中添加这些值,它总是添加响应列表(ArraList)的最后一个值。当我打印值时它工作正常。但是将值添加到列表视图中只会有一些问题。

提前致谢。

【问题讨论】:

  • 请出示您的适配器的代码
  • 你遇到什么样的问题
  • 我只得到数组列表的最后一个值。如果正在打印数组列表,它会打印所有值。问题只是当我将数组列表添加到列表视图中时。

标签: android arraylist android-listview


【解决方案1】:

那是因为您只有一个 messageView,并且它正在被您 arrayList 中的每个元素重用。这意味着当 for 循环完成时,只有最后一项将在其中,这就是为什么您的适配器只显示最后一项。您要么需要一个 messageView 数组,要么在循环再次执行之前将每个消息视图添加到适配器。

【讨论】:

  • 我在循环中添加了 messageView。然后也得到了相同的结果。我该如何解决这个问题。帮助我克服这个..谢谢
  • messageView 每次循环执行时都会被覆盖。这意味着要覆盖它的最后一件事是您的 arrayList 中的最后一项
猜你喜欢
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多