如何用列表中的数据创建listview< objet>-android studio

vfh0ocws  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(390)

我已经开始学习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());

我的主活动中的我的listview代码:

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

我只想知道,如何将列表中的数据放到listview中?这个想法是让用户看到所有客户的姓名和电话号码。
有没有办法转换数组中的列表?

gmxoilav

gmxoilav1#

你需要把实际的项目放在列表中-你用一个 Adapter ,在这里您实际上创建了一个 View 把数据放进去。
android开发者网站上有一个例子(出于某种原因不在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 我会用的。
有人推荐 RecyclerView 相反,它们更有效,更符合你的做事方式,但它们也更复杂。因此,我认为这是学习制作布局的基本思想的最好方法,将其膨胀并用数据填充。一旦你明白了这一点,所有的recyclerview样板将更容易处理!

相关问题