2016-04-25 22 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