Wenn ich meine Listenansicht filtere und auf das Element klicke, bekomme ich falsche Daten .. es werden immer die ersten Daten auf der Liste angezeigt.Wenn ich meine Listenansicht filtere und auf das Element klicke, erhalte ich falsche Daten
public class DisplayActivity extends Activity {
private DbHelper mHelper;
private ArrayList<String> listall;
private ArrayAdapter<String> userAdapter;
private ListView obj;
private EditText edt;
private ArrayAdapter<String> arrayAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.display_activity);
mHelper = new DbHelper(this);
final ArrayList<String> array_list = mHelper.getAllFriends();
arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, array_list);
edt = (EditText) findViewById(R.id.editText);
obj = (ListView) findViewById(R.id.List);
obj.setTextFilterEnabled(true);
obj.setAdapter(arrayAdapter);
obj.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
// TODO Auto-generated method stub
int id_To_Search = position + 1;
String id = String.valueOf(id_To_Search);
Intent i = new Intent(DisplayActivity.this, EditFriends.class);
i.putExtra("id", id);
startActivity(i);
}
});
edt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
arrayAdapter.getFilter().filter(s.toString());
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
@Override
public void onResume() {
super.onResume();
if (arrayAdapter != null) {
arrayAdapter.notifyDataSetChanged();
arrayAdapter.notifyDataSetInvalidated();
}
}
Warum in onResume() notifyDataSetChanged()? – XxGoliathusxX
Ich habe kein Problem damit, ich aktualisiere nur mein ArrayAddapter .. –