【问题标题】:How to create a ListView with data in a List<objet> - Android Studio如何使用 List<object> 中的数据创建 ListView - Android Studio
【发布时间】:2020-08-21 02:40:38
【问题描述】:

我已经开始学习使用 Java 和 Kotlin(使用 Android Studio)进行移动应用开发,但我遇到了一些问题: 我在文件中有一个 kotlin 类,代码如下:

data class Clients (
val Id: Long,
val name: String,
val phoneNumber: List<String>,
val avatar: Uri?
);

我在 MainActivity(Java) 中有这段代码:

List<Clients> infos = InfosKt.retrieveAll(getApplicationContext());

我的 MainActivity 中的 ListView 代码:

ListView list_clients;
list_clients = findViewById(R.id.list_allclients);

我只想知道,如何将 List 中的数据放入 ListView ?这个想法是用户可以看到所有客户的姓名和电话号码。

有没有办法将列表转换成数组?

【问题讨论】:

  • 你应该试试RecyclerView,它是ListView的更高级和灵活的版本
  • @NongthonbamTonthoi 好的,谢谢,我会阅读的。

标签: java android list listview kotlin


【解决方案1】:

您需要将实际项目放入列表中 - 您使用 Adapter 进行操作,您实际上创建了一个 View 并将数据放入其中。

有一个example on the Android developer site(由于某种原因不在 Kotlin 中,但你会明白的):

private class MyAdapter extends BaseAdapter {
 
       // override other abstract methods here
 
       @Override
       public View getView(int position, View convertView, ViewGroup container) {
           if (convertView == null) {
               convertView = getLayoutInflater().inflate(R.layout.list_item, container, false);
           }
 
           ((TextView) convertView.findViewById(android.R.id.text1))
                   .setText(getItem(position));
           return convertView;
       }
   }

基本上发生的事情是每当ListView 需要创建一个条目时,它就会在适配器中调用getView。这会膨胀一个列表项布局,您需要创建它 - TextViews 用于您的姓名和电话号码,ImageView 用于您的头像,诸如此类。

然后您只需找到这些视图并用您的数据填充它们 - getItem 正在为项目在列表中的位置传递一个 position 值,因此您可以使用它从数组中获取正确的数据对象,然后你可以设置你的视图来显示它。

所以你编写了那个类,然后调用setAdapter(MyAdapter())ListView 将使用它。

有人推荐RecyclerViews 代替,它们更高效,也是你应该做的事情,但它们也更复杂。所以我认为这是学习制作布局、填充布局和填充数据的基本思想的最佳方式。一旦你理解了这一点,所有的 RecyclerView 样板都会更容易处理!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-14
    • 2018-06-14
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 2014-12-20
    • 2015-12-24
    • 1970-01-01
    相关资源
    最近更新 更多