Listview是空的

时间:2014-10-02 07:11:05

标签: android android-listview

我有以下代码如下。我试图运行一个简单的列表视图,所有没有错误,输出是空白屏幕。

MainActivity.java

public class MainActivity extends ActionBarActivity {

    String[] stateArray = {"jh","kd"};
    private ListView stateListView;
    private ArrayAdapter<string> arrayAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        stateListView = (ListView) findViewById(R.id.state_list);
        arrayAdapter  = new ArrayAdapter<string>(this,android.R.layout.simple_list_item_1);
        stateListView.setAdapter(arrayAdapter);
    }


}

activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.lab4_1.MainActivity" >


    <ListView
        android:id="@+id/state_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ListView>

</RelativeLayout>

Al工作正常没有错误,模拟器只显示空哪个屏幕内没有任何内容。可能会遗漏什么?

8 个答案:

答案 0 :(得分:1)

试试这种方式

 arrayAdapter  = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,stateArray);

Array作为ArrayAdapter

的第三个参数传递

有关更多信息,请转到AndroidListView/Vogella

答案 1 :(得分:0)

它是空的,因为您没有将数据集提交到适配器

 arrayAdapter  = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1);

中更改它
 arrayAdapter  = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, stateArray);

Here您可以找到文档

答案 2 :(得分:0)

您尚未在适配器中传递实际数据,这就是显示listview为空的原因。简单地将stateArray作为适配器的最后一个参数传递,如下所示:

更改您的适配器行,如下所示:

    String[] stateArray = {"jh","kd"};

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

<string> <String>设为<String>您需要制作&#39; S&#39;资本。

注意:它的String[]部分意味着ArrayAdapter将使用String数据(paths参数)。换句话说,数组中的每个元素都是{{1}}。

答案 3 :(得分:0)

更改

arrayAdapter  = new ArrayAdapter<string>(this,android.R.layout.simple_list_item_1);

arrayAdapter  = new ArrayAdapter<string>(this,android.R.layout.simple_list_item_1,stateArray );

答案 4 :(得分:0)

首先,您在ArrayList上定义泛型是错误的。需要说ArrayList<String>。注意大写S.

您需要将项目添加到列表中。 UI Designer会自动添加样本项,这可能让您误以为已经存在项目。

尝试在onCreate()的末尾添加arrayAdapter.add("Test");之类的内容。

如果可行,您可以使用以下命令添加stateArray:

 arrayAdapter.addAll(stateArray)

完整的MainActivity.java:

package com.example.test;

import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {

    String[] stateArray = {"jh","kd"};
    private ListView stateListView;
    private ArrayAdapter<String> arrayAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        stateListView = (ListView) findViewById(R.id.state_list);
        arrayAdapter  = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1);
        stateListView.setAdapter(arrayAdapter);
        arrayAdapter.add("Test");
        arrayAdapter.addAll(stateArray);
    }


}

答案 5 :(得分:0)

试试这个

arrayAdapter  = new ArrayAdapter<string>(this,android.R.layout.simple_list_item_1,stateArray);

答案 6 :(得分:0)

像这样使用

adapter.setAdapter(new ArrayAdapter<>(getActivity(),android.R.layout.simple_list_item_1,stringarray));

答案 7 :(得分:0)

这是空的,因为您没有将任何数据传递给适配器,适配器充当桥梁并负责使视图看到此See Adapter

请参阅这些示例Examples这将对您有所帮助。

祝你好运!