Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Listview是空的_Android_Android Listview - Fatal编程技术网

Android Listview是空的

Android Listview是空的,android,android-listview,Android,Android Listview,我有如下代码。我试图运行一个简单的列表视图,所有的都没有错误,输出是空的白色屏幕 MainActivity.java public class MainActivity extends ActionBarActivity { String[] stateArray = {"jh","kd"}; private ListView stateListView; private ArrayAdapter<string> arrayAdapter; @Ov

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

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);
    }


}
公共类MainActivity扩展了ActionBarActivity{
字符串[]stateArray={“jh”,“kd”};
私有ListView stateListView;
专用阵列适配器阵列适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
stateListView=(ListView)findViewById(R.id.state\u list);
arrayAdapter=新的arrayAdapter(这是android.R.layout.simple\u list\u item\u 1);
setAdapter(arrayAdapter);
}
}
活动\u 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工作正常,没有错误,模拟器只显示空屏幕,里面什么也没有。可能缺少什么?

试试这种方法

 arrayAdapter  = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,stateArray);
arrayAdapter=newarrayadapter(这是android.R.layout.simple\u list\u item\u 1,stateArray);
将您的
数组作为
ArrayAdapter


有关详细信息,请转到

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

 arrayAdapter  = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1);
arrayAdapter=newarrayadapter(这是android.R.layout.simple\u list\u item\u 1);
换成

 arrayAdapter  = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, stateArray);
arrayAdapter=新的arrayAdapter(这是android.R.layout.simple\u list\u item\u 1,stateArray);

您可以找到文档

您没有在适配器中传递实际数据,这就是为什么它的listview显示为空。只需将
stateArray
作为适配器的最后一个参数传递,如下所示:

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

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, stateArray);
按如下所示更改适配器线路:

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

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, stateArray);
String[]stateArray={“jh”,“kd”};
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple_list_item_1,stateArray);
使你的
成为
你需要的资本

注意:其中的
部分表示ArrayAdapter将使用
字符串[]
数据(路径参数)。换句话说,数组中的每个元素都是一个
字符串

arrayAdapter  = new ArrayAdapter<string>(this,android.R.layout.simple_list_item_1);
arrayAdapter=newarrayadapter(这是android.R.layout.simple\u list\u item\u 1);

arrayAdapter=newarrayadapter(这是android.R.layout.simple\u list\u item\u 1,stateArray);

首先,您对ArrayList上泛型的定义是错误的。它需要说
ArrayList
。请注意大写字母S

您需要将项目添加到列表中。UI设计器正在自动添加示例项,这可能会让您误以为已经有了示例项

尝试添加类似于
arrayAdapter.add(“测试”)位于onCreate()的末尾

如果可行,您可以使用以下方法添加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);
    }


}
package com.example.test;
导入android.app.ActionBar;
导入android.app.Activity;
导入android.os.Bundle;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
公共类MainActivity扩展了活动{
字符串[]stateArray={“jh”,“kd”};
私有ListView stateListView;
专用阵列适配器阵列适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
stateListView=(ListView)findViewById(R.id.state\u list);
arrayAdapter=新的arrayAdapter(这是android.R.layout.simple\u list\u item\u 1);
setAdapter(arrayAdapter);
arrayAdapter.添加(“测试”);
arrayAdapter.addAll(stateArray);
}
}
试试这个

arrayAdapter  = new ArrayAdapter<string>(this,android.R.layout.simple_list_item_1,stateArray);
arrayAdapter=newarrayadapter(这是android.R.layout.simple\u list\u item\u 1,stateArray);
像这样使用

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

这是空的,因为您没有向适配器传递任何数据,适配器充当桥接器,负责使视图看到这一点

看看这些例子,这会对你有所帮助


祝你好运

显示您的数组适配器对于测试,我只是将其作为数组字符串[]stateArray={“jh”,“kd”};?您必须在适配器中传递数据才能获取列表视图中的内容,请阅读此内容,例如,我之前实际尝试过,它给我一个错误,说arrayAdapter=new arrayAdapter(这是android.R.layout.simple_list_item_1,stateArray);构造函数ArrayAdapter(MainActivity,int,String[])未定义。要接受它,我必须在此处做哪些更改?请查看我的更新答案@用户3953386将您的
设置为
您需要将您的
S
设置为captal。那么,由于我最初将其设置为私有,所以确切的问题是什么?请查看更新的答案@user3953386您错误地为字符串值定义了基元类型类。您在
字符串
类的大写字母“s”之外还写了小的“s”。实际上我以前试过,它给我一个错误,说arrayAdapter=new arrayAdapter(这是android.R.layout.simple_list_item_1,stateArray);构造函数ArrayAdapter(MainActivity,int,String[])未定义。请使用
getApplicationContext()替换
this
一个解释将改进此答案。