2016-04-25 13 views
0

Ich habe 2 ListView, und Elemente in der Liste haben ein onClick-Ereignis.Problem mit zwei Listenansichten auf Android

Wenn ich auf das erste Element in Zeile 1 klicke, wird das onclick-Ereignis des ersten Elements der zweiten Liste ausgeführt.

//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

auswählen, sind die zwei Listenansicht auf demselben Layout? – Mohit

+1

Mögliches Duplikat von [Wie kann man mehr als eine Listenansicht für verschiedene onItemClickListener ausgeben?] (Http://stackoverflow.com/questions/7580991/how-to-make-more-than-one-listview-respond-for-different) -onitemclicklistener) –

+0

Ja, im activity_main-Layout. –

Antwort

0

Sie können 2 verschiedene Listener verwenden, um Klickereignisse zu behandeln, um dieses Problem zu vermeiden.

für die Gerätelistenansicht,

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

dann

newDevicesListView.setOnItemClickListener(mDeviceClickListener); 

für gepaarte Listenansicht

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

dann

pairedListView.setOnItemClickListener(mPairedClickListener); 

Ein weiterer Weg besteht darin, eine Logik hinzuzufügen, um zu identifizieren, aus welcher Listenansicht das Klickereignis kommt. Da Sie denselben clicklistener verwenden, sollten Sie überprüfen, von welcher Listenansicht das Ereignis kommt. Dann können Sie entsprechende ArrayList

Verwandte Themen