2016-09-29 9 views
1

Ich habe Student Roll Store in ListView.Now möchte ich auswählen und klicken Sie auf Roll Nein, so zeigen Sie mir den Namen des Schülers. Zum Beispiel, wenn ich roll no = 1 wenn ich auf diese klicken, um es sollte mich wie ein Name zu zeigen, und wenn ich auf der Rolle klicken no 2, es sollte mich wie b nennen zeigen, und so weiter ....So wählen Sie einen bestimmten Benutzer aus ListView in Android

ArrayList<String> student = new ArrayList<String>(); 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_selectable_list_item, student); 
ListView list = new(ListView)findViewById(R.id.ll); 

public void dd(View view){ 
    if (res.getCount() == 0) { 
     // show message 
     showMessage("Error", "Nothing found"); 
     return; 
    } 

    while (res.moveToNext()) { 
     String roll = "Roll No1:" + res.getString(0); 
     String rolll = "Roll NO2:" + res.getString(1); 
     String rollk = "Roll NO3:" + res.getString(2); 
     student.add(roll); 
     student.add(rolll); 
     student.add(rollk); 
     list.setAdapter(adapter); 
    } 
} 


list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
     Toast.makeText(getBaseContext(), student.get(i), Toast.LENGTH_SHORT).show(); 
    } 

}); 

es funktioniert richtig aber die gleiche Nachricht für alle.Ich verwendete auch die switch statment für diese aber geht zu vielen Bündeln von Fall wie Fall 0, Fall 1, Fall 2 usw. Und ich habe auch die if-Bedingung verwendet, aber es geht auch zu Buchs von wenn condition.So möchte ich einen bestimmten Weg, um dies zu handhaben.Und klicken Sie auf Rolle Nr. 2, um einen Namen zu zeigen und klicken Sie auf r oll no3 um einen anderen Schülernamen anzuzeigen.

+0

Wie sieht res aus? – Ben

+0

Res ist in Ordnung, es funktioniert gut .its Daten aus der Datenbank –

+0

Nun, es ist nicht "gut" Ihre onClickListener ist korrekt. Das Problem besteht also darin, wie Sie den Array-Listen-Schüler füllen. Es wäre hilfreich für Leute, die versuchen, hilfreich zu sein, wenn Sie Res zeigten. – Ben

Antwort

0

Ich denke, Sie haben etwas mit Ihrem Cursor verwirrt. Es ist schwer zu sagen, ohne Ihre Datenbankeinrichtung zu sehen. Schauen wir uns an, was Sie gerade haben

//I would add res.moveToStart() here just to be safe. 
while (res.moveToNext()) { //This should probably be a do while otherwise you'll skip the first entry 

     //This is where things seem to be not right these next three statements get columns 1, 2 and 3 of your database. 
     //So this would mean your database structure is 
     //|roll|roll|roll| 
     //is this really correct? 
     //I would think for performance you would have an index and something like 
     //|id|roll name|roll email?| 
     //with that setup you would simply do 
     String rollName = "Roll NO2:" + res.getString(1); 
     student.add(rollName); 
} 

//I would also instantiate adapter here now that your list is populate or call notifyDataSetChanged() on it 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_selectable_list_item, student); 

//This should also be outside of your loop you don't need to call this every time. 
list.setAdapter(adapter); 
Verwandte Themen