ArrayAdapter要求资源ID为TextView - ERROR

时间:2017-06-01 11:14:05

标签: android listview

我正在尝试在Android中自定义我的列表视图

this

我想要实现的是我想在每个listview项目的左侧添加这些颜色,当然我想为每个项目使用不同的颜色。我怎样才能做到这一点?

这是我的listview所在的代码:

<RelativeLayout
    android:id="@+id/hidden_panel"
    android:layout_width="match_parent"
    android:layout_marginTop="56dp"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:visibility="gone" >

    <ListView
        android:id="@+id/listView1"
        android:layout_width="wrap_content"
        android:layout_height="500dp" >
    </ListView>

    <Button
        android:id="@+id/button7"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:textColor="#fff"
        android:textSize="18sp"
        android:layout_marginTop="5dp"
        android:text="Compute admission chance"
        android:textAllCaps="false"
        android:background="@drawable/roundshapebtn"
        android:layout_below="@id/listView1"
        android:layout_centerInParent="true" />
</RelativeLayout>

修改 这就是我为listview项目所做的:

ListView lv = (ListView) findViewById(R.id.listView1);
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.spinner_layout,listRecNames);
                lv.setAdapter(adapter);

布局:

<?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="95dp"
    android:divider="?android:dividerVertical"
    android:showDividers="middle" >
    <!-- You can use any view here. Set background "rectangle.xml" drawable to this view.-->
    <View
        android:layout_width="20dip"
        android:layout_height="20dip"
        android:background="@drawable/rectangle"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        />

    <TextView
        android:id="@+id/custom_spinner"
        android:textSize="16sp"
        android:padding="10dp"
        android:textColor="#000"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</RelativeLayout>

但是我收到了这个错误:

  

ArrayAdapter要求资源ID为TextView

2 个答案:

答案 0 :(得分:0)

您需要使用ArrayAdapter的自定义实施方案,在其中实施getView()以对您的View进行充气,并完全按照您的意愿行事。

您使用的是一个通用适配器,适用于只有一个文本显示在TextView s列表中的列表项。

有关详情,请参阅以下教程:Custom ArrayAdapters

答案 1 :(得分:0)

数组适配器需要Textview的ID才能将值绑定到列表视图中。

  ListView lv = (ListView) findViewById(R.id.listView1);
  ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.spinner_layout,R.id.custom_spinner,listRecNames);
  lv.setAdapter(adapter);