如何在自定义Listview布局适配器中的另一个Textview下方安排Textview?添加了适配器支持

时间:2018-08-21 15:03:46

标签: android listview custom-adapter

在编程方面,我发现我最大的问题有时是布局,尽管这些自定义适配器也可能很棘手。我知道这是一个令人困惑的问题,所以已经准备好要实现的目标的图像。

This is the current Layout I am working with.

And this is how I would like it to look like.

所以,你们都怎么想。我在这里有什么要做的吗,或者这仅仅是我必须通过字符串操作来完成的事情吗?我正在使用水平的LinearLayout,并将在下面发布布局文件。预先感谢!

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="50dp">

<ImageView
    android:id="@+id/steemlogoCURATIONROW"
    android:layout_width="0dp"
    android:layout_height="50dp"
    android:layout_weight="1"
    android:padding="0dp"
    android:paddingBottom="0dp"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp"
    app:srcCompat="@drawable/steemlogo" />

<TextView
    android:id="@+id/userDataCURATIONROW"
    android:layout_width="0dp"
    android:layout_height="50dp"
    android:layout_weight="1"
    android:text="Poster Data:"
    android:textColor="@android:color/black"
    android:textSize="18sp" />

<TextView
    android:id="@+id/postDataCURATIONTOOL"
    android:layout_width="0dp"
    android:layout_height="50dp"
    android:layout_weight="1"
    android:text="Post Data:"
    android:textColor="@android:color/background_dark"
    android:textSize="18sp" />
</LinearLayout>

第二个问题!

我可以在我的自定义适配器中使用多个textview吗?我现在只尝试使用这2个视图,尝试以下代码时出现错误。

public class CustomCurationAdaptor extends ArrayAdapter<String> {
public CustomCurationAdaptor(@NonNull Context context, String[] items1, String[] items2) {
    super(context, R.layout.curation_tool_row, items1, items2);
}

这将返回错误:

"Cannot resolve method 'super(android.content.context, int, java.lang.String[], java.lang.String[]'"

1 个答案:

答案 0 :(得分:0)

从我的角度来看,最简单的方法是这种布局:

<?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="120dp">

<ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:src="@drawable/ic_launcher_background" />

<LinearLayout
    android:id="@+id/top_text_view_container"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:weightSum="1"
    android:gravity="center_vertical"
    android:layout_toRightOf="@+id/image"
    android:orientation="horizontal" >

    <TextView
        style="@style/ListItemTextView"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.5"
        android:background="#99CCFF"
        android:text="First text row"/>

    <TextView
        style="@style/ListItemTextView"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.5"
        android:background="#CCFFCC"
        android:text="Second text row"/>

</LinearLayout>

<LinearLayout
    android:id="@+id/bottom_text_view_container"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:weightSum="1"
    android:gravity="center_vertical"
    android:layout_toRightOf="@+id/image"
    android:layout_below="@+id/top_text_view_container"
    android:orientation="horizontal" >

    <TextView
        style="@style/ListItemTextView"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.5"
        android:background="#FFCCFF"
        android:text="Third text row"/>

    <TextView
        style="@style/ListItemTextView"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.5"
        android:background="#CC99CC"
        android:text="Fourth text row"/>

</LinearLayout>

<style name="ListItemTextView">
    <item name="android:gravity">center_vertical</item>
    <item name="android:paddingLeft">16dp</item>
    <item name="android:paddingRight">16dp</item>
</style>

认为它可能有点沉重。对于列表中的每一行,它都使用weightSum的昂贵操作,并将此计算加倍,因为它在回收器视图中使用了两个LinearLayout。

在设备组团队的支持下,我们在底层设备上真正遇到问题之前,我不会对其进行优化,但是寻找性能最佳的解决方案将是一个很好的选择。

可能会限制布局提供更好的选择(无论如何,百分比布局是更好的选择)