【问题标题】:ListView only populates on App RestartListView 仅在 App Restart 时填充
【发布时间】:2015-09-24 05:03:33
【问题描述】:

我的 ListView 函数有问题。它是一个带有数组适配器的简单列表视图。该数组包含字符串。但是,只有在我重新启动应用程序时才会填充数据。它不会在活动开始后立即填充。

public void setTemp() {
    carpoolView = (ListView) findViewById(R.id.carpoolsList);
    carpoolView.invalidateViews();
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, objectIds);

    carpoolView.setAdapter(adapter);


}


    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_pools);
    Parse.initialize(this, "XXXXXXXXXX", "XXXXXXXXXXXX");
    String currentUserName = ParseUser.getCurrentUser().get("fullName").toString();
    ActionBar mp = getActionBar();
    mp.setTitle(currentUserName +"'s Carpools");
    mp.setBackgroundDrawable(new ColorDrawable(Color.RED));
    receiveCarpools();
    //setList();
    setTemp();


    AdView mAdView = (AdView) findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder().build();
    mAdView.loadAd(adRequest);

【问题讨论】:

  • 从哪里调用setTemp()
  • 另外,没有必要使您的视图无效(代码的第 3 行)

标签: android listview adapter populate


【解决方案1】:

Here 是 vogella 关于如何使用列表视图的一个很好的教程。

基本上,您需要在适配器上调用 notifyDataSetChanged() 来通知它需要从 listview 的模型更新视图。

因此,当使用 setTemp() 时,为您的 Activity/Fragment 调用此 onCreateView() 以最初填充列表。如果您修改列表视图的模型,例如要添加新的列表项,您需要使用 notifyDataSetChanged() 或 notifyDataSetInvalidated() 调用让适配器知道数据模型已更改。像这样

mAdapter.notifyDataSetChanged();

您还需要避免在每次 setTemp() 时创建新适配器。每次创建适配器并让旧适配器收集垃圾,这有点浪费资源。建议为适配器使用一个全局字段,该字段可以为您的数据模型持久化,这样您就可以在事情发生变化等时随时通知它。

【讨论】:

    【解决方案2】:

    首先

    为什么不在 onCreate 方法中投射你的 ListView,你使用的是 Activity、Fragment 吗?所以问题是你为什么在你的内部函数中投射 ListView 项?...

    其次,正如人们之前所说,如果你的适配器,或者在这种情况下 objectIds 发生变化,你必须使用它来通知你的适配器

    carpoolView.notifyDataSetChanged(); 
    

    告诉您的适配器您的数据已更改,因此必须更新。

    你什么时候调用你的函数?,这也可能是错误。

    问候。

    【讨论】:

      【解决方案3】:

      你可以在最后一行使用这个函数。希望它对你有用。

      notifyDataSetChanged();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        相关资源
        最近更新 更多