繁体   English   中英

在Android中实现自定义ListView

[英]Implement a custom ListView in Android

我在MainActivity中创建了一个listView,并为行布局创建了另一个布局文件,如下所示:

我的row_layout

问题是,我该如何实现它? 我在哪里设置所有必须在文本中的字符串? 哪些是注意到的

我看过互联网,但我找到了一个像我一样有类似listView的人。

我知道对于Strings我可以使用数组,但是我也可以设置一个ImageViews数组吗?

我真的很感激,如果你能给我一个详细的答案,你可以解释我如何“把东西”放在我的listView中

编辑:添加了row.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="wrap_content">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="text"
        android:textAllCaps="true"
        android:textSize="36sp"
        android:layout_marginTop="10dp"
        android:fontFamily="sans-serif-condensed"
        android:textStyle="bold"
        android:textColor="@color/black" />

    <TextView
        android:id="@+id/note"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/text"
        android:text="note note note"
        android:layout_marginTop="2dp"
        android:fontFamily="sans_serif_medium"
        android:textSize="24sp"/>

    <ImageView
        android:layout_width="200dp"
        android:layout_height="140dp"
        android:scaleType="fitCenter"
        android:layout_alignParentEnd="true"/>

</RelativeLayout>

你应该创造

  1. 一个类,(让我们命名为DataModel.java ,你可以给出你希望的任何名字)代表你的数据: String text, note, image url; 以及getter和setter方法。
  2. 一个扩展ArrayAdapter的类。 重写getView()方法。 ArrayList< DataModel >传递给创建的自定义数组适配器。 创建一个构造函数并调用super来调用ArrayAdapter的构造函数“: ArrayAdapter(Context context, int resource, List<T> objects)

在getView方法中膨胀行布局并设置数据[匹配Arraylist中的索引和getView方法的position参数]

在您的问题的上下文中,我建议您更多地了解view holder patternRecyclerView ,它将帮助您了解事物的工作方式以及如何有效地完成工作。

你想要做的是创建一个自定义类,并让它扩展ArrayAdapter或BaseAdapter。 在它的构造函数中,您可以为文本和图像传递一个String数组。 在getView方法中,膨胀自定义行:

 LayoutInflater layoutInflater = LayoutInflater.from(context);
    View yourView = layoutInflater.inflate(R.layout.added_row, parent, false);

然后,您可以使用传递给设置值的数组设置行的值:

TextView text = (TextView) yourView.findViewById(R.id.text);
text.setText(text[position]);

使用自定义适配器方法在自定义列表视图中加载数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM