使用 ArrayList 填充 ListView?

新手上路,请多包涵

我的 Android 应用程序需要使用来自 —7f830d683668b689b ListView 的数据填充 ArrayList

我很难做到这一点。有人可以帮我处理代码吗?

原文由 kAnNaN 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 412
2 个回答

您需要通过 ArrayAdapter 来完成它,这将使您的 ArrayList(或任何其他集合)适应您布局中的项目(ListView、Spinner 等)。

这是 Android 开发人员指南 所说的:

一个 ListAdapter 管理一个 ListView 由任意对象数组支持。默认情况下,此类期望提供的资源 ID 引用单个 TextView 。如果您想使用更复杂的布局,请使用也采用字段 ID 的构造函数。该字段 ID 应在较大的布局资源中引用 TextView

然而 TextView 被引用,它将被数组中每个对象的 toString() 填充。您可以添加自定义对象的列表或数组。重写对象的 toString() 方法以确定将为列表中的项目显示的文本。

要使用 TextViews 以外的其他内容来显示数组,例如 ImageViews ,或者除了 toString() 之外还有一些数据 -- 覆盖视图 -- 覆盖结果 getView(int, View, ViewGroup) 返回您想要的视图类型。

所以你的代码应该是这样的:

 public class YourActivity extends Activity {

    private ListView lv;

    public void onCreate(Bundle saveInstanceState) {
         setContentView(R.layout.your_layout);

         lv = (ListView) findViewById(R.id.your_list_view_id);

         // Instanciating an array list (you don't need to do this,
         // you already have yours).
         List<String> your_array_list = new ArrayList<String>();
         your_array_list.add("foo");
         your_array_list.add("bar");

         // This is the array adapter, it takes the context of the activity as a
         // first parameter, the type of list view as a second parameter and your
         // array as a third parameter.
         ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
                 this,
                 android.R.layout.simple_list_item_1,
                 your_array_list );

         lv.setAdapter(arrayAdapter);
    }
}

原文由 Amokrane Chentir 发布,翻译遵循 CC BY-SA 4.0 许可协议

教程

还要查找 ArrayAdapter 接口:

 ArrayAdapter(Context context, int textViewResourceId, List<T> objects)

原文由 Sonny Saluja 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题