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