在主类findviewbyid中声明listview不起作用

时间:2013-05-09 08:43:18

标签: android xml android-listview

我制作了自定义列表视图。现在我想为listview添加 onitemclick 方法,但为此需要在主类。我的列表视图的xml代码如下。

   <ListView
   android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/textView8"
   >

</ListView> 

如果我以 android:id =“@ + id / list”的格式更改ID,那么我的应用程序崩溃了.. 所以建议我该怎么做才能解决它?

3 个答案:

答案 0 :(得分:1)

  

如果我以像android:id =“@ + id / list”这样的格式更改id,那么我的   应用程序崩溃

因为如果你在xml中声明了带有@+id/android:list id的ListVIew,那么你将需要使用android.R.id.list来初始化ListView instance.in main class这样做:

ListView listview = (ListView) findViewById(android.R.id.list);

或者如果您正在扩展ListActivity,那么您也可以使用getListView()方法将ListView实例初始化为

ListView listview = Current_Activity_Name.this..getListView();  

答案 1 :(得分:1)

只需使用findViewById(android.R.id.list);即可获得ListView

答案 2 :(得分:0)

你必须做声明

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

然后你必须做

ListView v = (ListView)findViewById(R.id.listView1)

然后

v.setOnItemClick(new onItemClickListener(){

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

     }

});

我认为你不应该使用"@android:id/list"