2016-04-25 48 views
0

我有2個ListView,他們列表中的元素有一個onClick事件。Android上的兩個列表視圖的問題

當我點擊第1行的第一個元素時,它執行第二個列表的第一個元素的onclick事件。

//Adapter 
mNewDevicesArrayAdapter = new ArrayAdapter<String>(this, R.layout.device_name); 

//Lists/adapters/events 
ListView pairedListView = (ListView) findViewById(R.id.paired_devices); 
pairedListView.setAdapter(pairedDevicesArrayAdapter); 
pairedListView.setOnItemClickListener(mDeviceClickListener); 


ListView newDevicesListView = (ListView) findViewById(R.id.new_devices); 
newDevicesListView.setAdapter(mNewDevicesArrayAdapter); 
newDevicesListView.setOnItemClickListener(mDeviceClickListener); 

//Click Event 
private AdapterView.OnItemClickListener mDeviceClickListener = new AdapterView.OnItemClickListener() { 
    public void onItemClick(AdapterView<?> av, View v, int arg2, long arg3) {  
    Log.d(TAG, "element: "+ DeviceArrayList.get(arg2).getName()); 
    } 
} 
+0

這兩個listview是在同一個佈局上嗎? – Mohit

+1

可能的重複[如何使多個listview響應不同的onItemClickListener?](http://stackoverflow.com/questions/7580991/how-to-make-more-than-one-listview-respond-for-different -onitemclicklistener) –

+0

是的,在activity_main佈局中。 –

回答

0

您可以使用2個不同的偵聽器來處理單擊事件以避免此問題。

用於設備列表視圖,

private AdapterView.OnItemClickListener mDeviceClickListener = new AdapterView.OnItemClickListener() { 
    public void onItemClick(AdapterView<?> av, View v, int arg2, long arg3) {  
    Log.d(TAG, "element: "+ DeviceArrayList.get(arg2).getName()); 
    } 
} 

然後

newDevicesListView.setOnItemClickListener(mDeviceClickListener); 

用於配對列表視圖

private AdapterView.OnItemClickListener mPairedClickListener = new AdapterView.OnItemClickListener() { 
    public void onItemClick(AdapterView<?> av, View v, int arg2, long arg3) {  
    Log.d(TAG, "element: "+ SomeOtherArray.get(arg2).getName()); 
    } 
} 

然後

pairedListView.setOnItemClickListener(mPairedClickListener); 

還有一種方法是,您可以添加邏輯來確定點擊事件來自哪個列表視圖。由於您使用的是相同的clicklistener,因此您應該檢查事件即將從哪個列表視圖中進行檢查。那麼你可以選擇相應的ArrayList