2011-11-21 26 views
1

如果我在一個活動中有2個或更多的列表視圖,那麼我如何使用onclicklistener?我的意思是我怎麼知道用戶點擊哪一個?2在同一活動中的ListViews

public void onItemClick(AdapterView parent, View v, int position, long id) { 


     } 

上面的代碼是我用過,但是當我嘗試使用其他的ListView,我無法找到一個方法來檢測單擊的是哪個列表視圖。

任何ideeas解決這個?

回答

5

在這種情況下,parent是itemClick源自的listView。所以你可以做的是爲每個ListView保留一個成員變量,並將父對象與這些成員進行比較,以查看哪個列表觸發了點擊。

所以這裏有一個簡單的類與我的意思:

public class MyTest extends Activity{ 
    private ListView list1; 
    private ListView list2; 

    public void onCreate(Bundle b){ 
    super.onCreate(b); 

    list1 = new ListView(); 
    list2 = new ListView(); //or findViewById if you declared them in your layout 
    //the rest of your creation code here 
    } 

    public void onItemClick(AdapterView parent, View v, int position, long id) { 
     if(list1 == parent){ 
     //handle list1 click 
     }else{ 
     //handle list 2 click 
     } 

     } 

} 
+0

成員變量?我真的不明白這意味着什麼。我的列表視圖一個接一個地被刪除,而不是單獨的功能。請給我一個前例。 –

+0

它們是否用單獨的方法聲明是無關緊要的。您只需跟蹤實例,以便稍後進行比較。我用一個例子編輯了我的回答。 – Chris

+0

非常感謝!它的工作就像一個魅力,現在我覺得有點愚蠢,因爲它很容易,但直到現在我從來沒有父母的頭:)再次感謝! –

0

你可以做到這一點,因爲這:

listView1.setOnClickListener(new OnClickListener() {  
    @Override 
    public void onClick(View v) { 
     // TODO: click on first listview 
    } 
    }); 

    listView2.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // TODO: click on second listview 
    } 
    }); 
0

它很簡單, 只有一個列表可以爲下正式名單行事一個ListActivity和這個列表(只有這個列表)應該有特殊的列表id(@android:list我認爲),所以只需將其他列表的id設置爲其他id並設置其setOnItemClickListener來執行任何你想要的操作。我目前正在開發一個帶有2個listViews和一個額外列表Fragment的應用程序。

2

有兩種方法可以做到這一點。

實施OnItemClickListener

public class ListViewTest extends Activity implements OnItemClickListener { 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View view, int arg2, long arg3) { 
     if(view ==myListView)1{ 

     } 
     if(view ==myListView){ 

     } 
    } 
} 

設定自己的聽衆

myListView.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // TODO: click on second listview 
    } 
    }); 
相關問題