在 Android 中实现自定义 ListView

Posted

技术标签:

【中文标题】在 Android 中实现自定义 ListView【英文标题】:Implement a custom ListView in Android 【发布时间】:2016-10-28 02:16:18 【问题描述】:

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

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

我在互联网上查看过,但我可以找到与我的 listView 相似的人。

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

如果你能给我一个详细的答案,解释我如何在我的 listView 中“放东西”,我将不胜感激

编辑:添加了 row.xml

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

    <TextView
        android:id="@+id/text"
        android:layout_
        android:layout_
        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_
        android:layout_
        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_
        android:layout_
        android:scaleType="fitCenter"
        android:layout_alignParentEnd="true"/>

</RelativeLayout>

【问题讨论】:

你有没有用getview for listView或者gridView? @janki 不,这是我第一次使用 listView 阅读此tutorial 【参考方案1】:

您要做的是创建一个自定义类并让它扩展 ArrayAdapter 或 BaseAdapter。在它的构造函数中,您可以将文本和图像的字符串数组传递给它。在 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]);

【讨论】:

【参考方案2】:

你应该创建

    一个类,(让我们将其命名为DataModel.java,您可以给出您希望的任何名称)代表您的数据:String text, note, image url; 以及getter 和setter 方法。 一个扩展ArrayAdapter的类。覆盖getView() 方法。将ArrayList&lt; DataModel &gt; 传递给创建的自定义数组适配器。创建构造函数并调用super调用ArrayAdapter的构造函数":ArrayAdapter(Context context, int resource, List&lt;T&gt; objects)

在 getView 方法中填充行布局并设置数据[将 Arraylist 中的索引与 getView 方法的位置参数匹配]

根据您的问题,我建议您更多地研究view holder patternRecyclerView,这将帮助您了解事情的运作方式以及应该如何有效地完成它们。

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于在 Android 中实现自定义 ListView的主要内容,如果未能解决你的问题,请参考以下文章

在 Gradle Android 中实现自定义库时未解析类

Android中实现自定义的拍照应用

Android中实现自定义XMPP消息包收发

Android中实现自定义XMPP消息包收发

Android中实现自定义XMPP消息包收发

聊技术在Android中实现自适应文本大小显示