在ListView上显示项目

时间:2016-05-07 15:19:06

标签: android listview

我正在尝试在listView上显示多个项目,但它没有在屏幕上显示。 它只是虚拟信息,但它仍然无法正常工作。我试过看一堆教程但却一无所获。

这是xml文件

<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_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingTop="0dp"
android:paddingBottom="0dp"
android:fitsSystemWindows="true"
android:id="@+id/container"
tools:context="com.example.pedrofialho.musicristo.SearchActivity">

<android.support.design.widget.AppBarLayout
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

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

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/list"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="55dp" />

</RelativeLayout>

这是java代码

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search_actvity);
    container = (ViewGroup) findViewById(R.id.container);
    LayoutInflater inflater = LayoutInflater.from(this);
    View rootView = inflater.inflate(R.layout.listview_search,container,false);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    list = (ListView) rootView.findViewById(R.id.list);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    String[] items = {"Comunhão","Passo a Passo","Tudo bem?","Esta lista não tem sentido"};
    mArrayList = new ArrayList<>(Arrays.asList(items));
    mArrayAdapter = new ArrayAdapter<>(this, R.layout.activity_search_actvity, R.id.list, mArrayList);
    list.setAdapter(mArrayAdapter);
}

在屏幕上,它不会显示任何白色屏幕。 提前谢谢

4 个答案:

答案 0 :(得分:1)

View rootView = inflater.inflate(R.layout.listview_search,container,false);

膨胀一个新屏幕,直到你明确地将它显示在屏幕上,甚至将它添加到当前View层次结构的容器部分或替换当前内容(再次调用setContentView)。根据您发布的布局,我假设activity_search_actvity.xml已包含ListView,因此请删除inflater,并使用findViewById来检索对象部分您使用setContentView(R.layout.activity_search_actvity);设置的布局。您还使用错误的参数实例化了ArrayAdapter。第二个参数是您要使用list项的布局,第三个参数是您要用来显示数据集的id的{​​{1}}。

答案 1 :(得分:1)

Here是ArrayAdapter初始化的正确方法。你必须提供一个包含例如的布局。一个TextView(如果你想显示文字),所以你应该用new ArrayAdapter...修改这样的行:mArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mArrayList);,因为现在你的适配器得到了你的布局活动,而非项目布局......
如果您必须为每个项目使用自定义布局,则应传递其ID,以及TextView的ID。 如果您需要更复杂的项目视图,则可以扩展ArrayAdapterBaseAdapter类以实现项目视图的创建。

答案 2 :(得分:0)

您将错误的参数传递给数组适配器。在您的情况下,它将为new Set() instanceof Set // will return false new Set() instanceof _Set // will return true

详细信息ArrayAdapter in android to create simple listview

在相对布局中使用ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mArrayList)

app:layout_behavior="@string/appbar_scrolling_view_behavior"

正如support library guidelines:

所解释的那样

答案 3 :(得分:0)

使用此

 ArrayAdapter <String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,getResources().getStringArray(R.array.array);

不要忘记将列表视图附加到它。

 ListView listView=getListView();//Your activity shoudl extends ListActivity
 listView.setAdapter(adapter);