我是
Android编程新手,我有一个ListView,当过滤总是返回列表中的第一项,所以我该如何解决这个问题?
例如,我的清单包含A.A,A.B,A.C,B.C,B.D.
当我想在列表中搜索以B开头的内容时,我会得到B.C,B.D但是当我点击B.C时,它返回给我A.A和B.D,它返回给我A.B
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 arg3) { // TODO Auto-generated method stub } public void afterTextChanged(Editable arg0) { // TODO Auto-generated method stub } }); }
}