在android上发布两个listviews的问题

时间:2016-04-25 11:26:10

标签: java android listview android-arrayadapter

我有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());
  }
}

1 个答案:

答案 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