我有2个ListView,列表中的元素有一个onClick事件。
当我点击第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 :(得分: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 );
还有一种方法是,您可以添加逻辑来识别click事件来自哪个列表视图。当您使用相同的clicklistener时,您应该检查事件即将来自哪个列表视图。然后你可以选择相应的ArrayList