ListView benutzerdefinierte Filter gibt falsches Element ausgewählt, wenn gefiltert

Ich bin neu in Android-Programmierung und ich habe eine ListView, wenn gefiltert immer wieder das erste Element in der Liste, also wie kann ich das beheben?

Zum Beispiel, meine Liste enthält AA, AB, AC, BC, BD Wenn ich die Liste für Dinge beginnend mit B suchen will, bekomme ich BC, BD aber wenn ich auf BC klicke, gibt es mir AA und BD zurück, es gibt mich zurück AB

  • Ändern der Anzahl der Spalten mit GridLayoutManager und RecyclerView
  • Wake up Android Handy mit bestimmten Worten wie Hallo Galaxy oder Ok Google
  • Retrolambda: Lint stürzt bei der Verwendung von Lambda-Ausdrücken mit Retrolambda ab
  • Wie man das Bild von url für imageView setzt
  • EditText nächste Schaltflächen-Tastatur
  • TextView, um eine E-Mail zu senden, wenn sie geklickt wird
  • public class PatientList extends Activity{ PatientDB patientDB; Context myContext; ListView lv_patients; EditText et_patients; ArrayAdapter<String> adapter; ArrayList<HashMap<String, String>> patientList; static String value; String[] patientarray = new String[]{"initials"}; ArrayList<String> patientArrayList = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_patient_list); myContext = this; patientDB = new PatientDB(myContext); patientDB.open(); Cursor patientCursor; patientCursor = patientDB.retrieveAllEntriesCursor(); if(patientCursor!=null && patientCursor.getCount()>0) { String patientInitials; patientCursor.moveToFirst(); do { patientCursor.getString(patientDB.COLUMN_KEY_ID); // + " " + patientInitials = patientCursor.getString(patientDB.COLUMN_INITIALS_ID); Log.i("FromCursor", patientInitials); patientArrayList.add(patientInitials); } while (patientCursor.moveToNext()); } lv_patients = (ListView) findViewById(R.id.lv_patients); et_patients = (EditText) findViewById(R.id.et_patients); lv_patients.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub String a = patientArrayList.get(position); Toast.makeText(PatientList.this, a + " selected", Toast.LENGTH_SHORT).show(); Intent returnIntent = new Intent(PatientList.this, PatientInfo.class); returnIntent.putExtra("value", a); setResult(RESULT_OK, returnIntent); finish(); } }); //Adding items to listview adapter = new ArrayAdapter<String>(this, R.layout.list_patients, R.id.patient_name, patientArrayList); lv_patients.setAdapter(adapter); //Enabling search filter et_patients.addTextChangedListener(new TextWatcher() { public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { // When user changed the Text PatientList.this.adapter.getFilter().filter(cs); } public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub } public void afterTextChanged(Editable arg0) { // TODO Auto-generated method stub } }); } 

    }

  • Android WebView Safe Schriftfamilie?
  • Aus Speicherfehler beim Aufblasen einfaches XML-Layout in Android
  • Wie bekomme ich FB User ID mit Facebook Login Button in Android Anwendung
  • Wie kann ich Vibrationen und Lichter mit den Android-Benachrichtigungen api aktivieren?
  • Langsame Uploads zum Ausführen von Android Emulator
  • Android Studio 2.2 verpackt keine Drittanbieterbibliothek
  • One Solution collect form web for “ListView benutzerdefinierte Filter gibt falsches Element ausgewählt, wenn gefiltert”

    Weil du deinen Adapter filterst, um BC in Position 0 und BD in Position 1 zu haben. Aber bei deiner Implementierung deines onClickListeners benutzt du die Position der Listview, um direkt aus der Quell-ArrayList zu kommen.

     String a = patientArrayList.get(position); 

    Stattdessen aus dem gefilterten Adapter:

     String a = parent.getAdapter().getItem(position); 

    oder

     String a = parent.getItemAtPosition(position); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.