android 上的两个列表视图出现问题
Issue with two listsviews on android
我有 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());
}
}
您可以使用 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 );
还有一种方法是,您可以添加逻辑来识别单击事件来自哪个列表视图。当您使用相同的点击监听器时,您应该检查事件来自哪个列表视图。然后你可以选择相应的 ArrayList
我有 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());
}
}
您可以使用 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 );
还有一种方法是,您可以添加逻辑来识别单击事件来自哪个列表视图。当您使用相同的点击监听器时,您应该检查事件来自哪个列表视图。然后你可以选择相应的 ArrayList