2010-11-28 86 views
2

我按照這個教程 http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/ 並喜歡爲listview添加點擊。OnClick ListView

現在這裏是我的main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:orientation="vertical" > 
<ListView 
    android:id="@+id/android:list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:divider="@drawable/list_divider" 
    android:dividerHeight="1px" 
    android:cacheColorHint="#00000000"/> 
</LinearLayout> 

這裏是我的代碼:

setContentView(R.layout.main);  
steden = new ArrayList<voorDeLijst>(); 
this.m_adapter = new StedenAdapter(this, R.layout.list_item, steden); 
setListAdapter(this.m_adapter); 

ListView lv = (ListView)findViewById(R.id.List); 
lv.setOnItemSelectedListener(new OnItemSelectedListener() { 
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
     AlertDialog.Builder adb = new AlertDialog.Builder(HelloAndroid.this); 
     adb.setTitle("LVSelectedItemExample"); 
     adb.setMessage("Selected Item is = "); 
     adb.setPositiveButton("Ok", null); 
     adb.show(); 
    } 

    public void onNothingSelected(AdapterView<?> arg0) { 
    // TODO Auto-generated method stub  
    } 
}); 

的事情是,我是一個初學者,並與上面的代碼,我得到一個錯誤,因爲它找不到列表視圖。所以我不能附加一個OnItemClick監聽器。 但是當我將<ListView android:id="@+id/android:list"更改爲<ListView android:id="@+id/List" 然後我可以找到listview。但它在行中提供了一個例外:setContentView(R.layout.main);

那麼,如何將onClick/onItemClick附加到具有自定義適配器以將對象綁定到listitems的Listview?

+0

隨着findViewById(R.id.List)你尋找與ID的觀點「列表」。因此,它必須是「@ + id/List」,或者您必須在代碼中更改它。順便說一句,有一個預定義的ListActivity可能更適合你!請在第二種情況的「setContentView(R.layout.main)」中爲異常提供更多錯誤信息。 – janoliver 2010-11-28 10:37:11

+0

我的類確實擴展ListActivity,但我不知道如何附加onClick監聽器 – 2010-11-28 15:15:38

回答

3

發現了它,因爲我的課延長了ListActivity我可以這樣做:

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) 
{ 
    super.onListItemClick(l, v, position, id); 
    // Get the item that was clicked 
    Object o = this.getListAdapter().getItem(position); 
    String keyword = o.toString(); 
    ... 
} 

我發現它在http://www.anddev.org/viewtopic.php?t=22

0

你試過findViewById(android.R.id.list)?實際上,如果你的活動基本上是一個大列表視圖,那麼你應該使用ListActivity作爲你的活動,並且有一個訪問器,可以直接訪問ListView

+0

我試過了,但是在setcontent方法中有一個未捕獲的異常。我不知道如何正確調試。我也是Eclipse的新手。我的類擴展ListActivity`公共類HelloAndroid擴展ListActivity {`但我不知道如何綁定onclick監聽器。 – 2010-11-28 15:14:04