对listview和listadapter的工作原理感到困惑

时间:2014-04-19 05:08:36

标签: android listview crash listadapter

我试图制作一个非常简单的列表视图来学习。当我在listview上设置适配器(从xml访问)时,应用程序崩溃了,但是当我只是将setAdapter放在listview后面时,listview就可以了。我在三星Galaxy s3智能手机上运行它。

这是我的代码

ListviewAndroidExample.java(即使我在onCreate之后将setContentView放到R.layout.activity_main,它也会崩溃)

 package com.example.listview;
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;

    public class ListViewAndroidExample extends ListActivity {

        ListView list;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
             String[] Home = {
                    "BEDROOM",
                    "BATHROOM",
                    "KITCHEN",
                    "WASHROOMS",
                    "BASEMENT"};
            ListView list=(ListView)findViewById(R.id.mylist);
            ArrayAdapter<String> adapter = new ArrayAdapter<String>    (this,android.R.layout.simple_list_item_1, Home);
            list.setAdapter(adapter);


}}

我的xml文件(activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:paddingLeft="8dp"
     android:paddingRight="8dp">

 <ListView android:id="@+id/mylist"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:background="#00FF00"
           android:layout_weight="1"
           android:divider="#FFCC00"
           android:dividerHeight="4px"/> 
           android:drawSelectorOnTop="false"/>     
</LinearLayout>

还请告诉我如何制作一个长吐司,点击列表项目时会说出哪个(位置)列表项被点击。

2 个答案:

答案 0 :(得分:3)

扩展ListActivity时,您必须在布局文件中放置XML listview。

ListView的id应该是:“@ android:id / list”

这就是Android查找列表布局的方式。

您可能希望阅读ListActivity and Custom Layout以更熟悉这个概念。

所以改变你的布局:

android:id="@+id/listView1"

到:

android:id="@android:id/list"

编辑:

  

还请告诉我如何制作长吐司   单击listitem时单击了(位置)listitem。

好的,使用它来点击项目。

your_listview_object.setOnItemClickListener(new OnItemClickListener()
{
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
    { 
        Toast.makeText(YourActivity.this, "Clicked on list item " + position, Toast.LENGTH_LONG).show();
    }
});

编辑2:

如果您不熟悉Android,我建议您首先使用extends Activity的简单活动尝试使用ListView,然后选择extends ListActivity选项。

答案 1 :(得分:1)

正在扩展列表活动,这是默认&amp;由android提供,你必须使用

android:id="@android:id/list"

而不是

@+id/mylist