Android应用程序 - listView不起作用

时间:2015-09-19 01:08:52

标签: android listview android-listview

我是Android应用程序编程的新手,并尝试将ListView包含到我的Test-App中,但它无效。我不知道ListView是不可见还是甚至没有初始化。

活动代码:

public class SecondActivity extends Activity {

Button button;
ListView lview;

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.second_layout);
    button = (Button) findViewById(R.id.button2);
    button.setOnClickListener(buttonClick);

    ListAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, R.array.list_array);
    lview = (ListView) findViewById(R.id.list_view);
    lview.setAdapter(adapter);
    lview.setBackgroundColor(Color.WHITE);
}

View.OnClickListener buttonClick = new View.OnClickListener() {

    public void onClick(View v) {
        finish();
    }
};
}

布局XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
>
<Button
    android:id="@+id/button2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Close Activity"
    android:textSize="30sp"
    />
<ListView
    android:id="@+id/list_view"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
</ListView>
</LinearLayout>

Array XML:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="list_array">
        <item>Im learning Android</item>
        <item>Yeaaay programming is fun</item>
        <item>OMG</item>
    </string-array>
</resources>

我真的不明白为什么ListView没有显示,因为我按照一步一步的教程。希望有人能帮我解决问题。

5 个答案:

答案 0 :(得分:0)

尝试给ListView一个高度为&#34; match_parent&#34;。

您目前将其作为&#34; wrap_content&#34;,但由于它是滚动视图,因此无法计算其子级的大小,因此它会折叠为0高度。

答案 1 :(得分:0)

我注意到的事情:new ArrayAdapter<String>(...) ArrayAdapter是通用的。

在XML中:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

答案 2 :(得分:0)

你的second_layout.xml有问题。它的高度应为match_parent,列表视图的高度应为dp或match_parent

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Close Activity"
android:textSize="30sp"
/>
<ListView
android:id="@+id/list_view"
android:layout_width="fill_parent"
android:layout_height="500dp">
</ListView>
</LinearLayout>

答案 3 :(得分:0)

这是我的一个例子。它工作正常。只需更改/添加您的内容

public class MyActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_functions);



        String[] functions = {"ABC", "DEF", "GHI"};

        ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, functions);
        final ListView lv = (ListView) findViewById(R.id.functionsListView);
        lv.setAdapter(adapter);

        lv.setOnItemClickListener(
                new AdapterView.OnItemClickListener() {

                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {



                        }
                    }
                }
        );
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item){
        int id = item.getItemId();
        if(id == android.R.id.home){
            onBackPressed();
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        overridePendingTransition(R.anim.pull_in_left, R.anim.push_out_right);
    }

}

XML: activity_functions.xml
<LinearLayout
    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:orientation="vertical"
    tools:context=".MyActivity"
    android:background="@color/white">

    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/functionsListView"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_marginBottom="8dp"/>

</LinearLayout>

答案 4 :(得分:0)

你打电话给错误的构造函数。

ArrayAdapter(Context context, int resource, int textViewResourceId)

在分配ArrayAdapter之前,从资源中获取数组,例如

getResources().getStringArray(R.array.xxxx.xml);

并使用下面的构造函数

ArrayAdapter(Context context, int resource)

ArrayAdapter(Context context, int resource, int textViewResourceId)

ArrayAdapter(Context context, int resource, T[] objects)

ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)

ArrayAdapter(Context context, int resource, List<T> objects)

ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects)