将适配器设置为ListView Android Studio

时间:2015-12-27 12:35:18

标签: android listview

我正在尝试在ListView中添加一些项目。当我打开Layout(startActivity)时,我调用了类Listing。

@Override
protected void onCreate(Bundle savedInstanceState)
{
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_listing);
        ListView lv = (ListView) findViewById(R.id.listViewLIST);
        String[] items = {"Item1", "Item2", "Item3", "Item4"};
        ArrayList<String> arrayList = new ArrayList<>(Arrays.asList(items));
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.activity_listing, R.id.listViewLIST, arrayList);
        lv.setAdapter(adapter);
}

我在每一步都阅读了一些教程,但应用程序始终在最后一行代码中停止工作

lv.setAdapter(adapter);

我错过了什么?

编辑27.12.2015 activity_listing.xml

    <?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    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_height="match_parent" android:fitsSystemWindows="true"
    tools:context="cigarkings.cigarking.Listing">

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listViewLIST"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_marginTop="51dp" />

    <SearchView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/searchView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignRight="@+id/listView"
        android:layout_alignEnd="@+id/listView" />

    <include layout="@layout/content_listing" />

</android.support.design.widget.CoordinatorLayout>

2 个答案:

答案 0 :(得分:0)

假设您的协调器布局缺少声明android:layout_width="match_parent"作为印刷错误,主要错误在于设置阵列适配器。

在语句中:ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.activity_listing, R.id.listViewLIST, arrayList);构造函数参数(第二个参数:R.layout.activity_listing和第三个参数:R.id.listViewLIST)不正确.Array Adapter将textview的资源ID作为第三个参数而不是列表视图,包含textview的布局的布局资源id作为第二个参数传递。

因此,一个解决方案是创建一个单独的xml布局,其中包含textview并将布局资源id作为第二个参数传递,textview id作为第三个参数传递给Array Adapter的构造函数

答案 1 :(得分:0)

首先,活动列表不应该采用这种模式 如果你处于起步阶段,那么先试试这个Tutorial ......
对初学者来说是最好的解释 然后,您必须使用BaseAdaptor类和自定义XML实现自定义listView。