Ich möchte eine ListView in einem Fragment aktualisieren, wenn ein Dialog geschlossen wird. Bis jetzt funktioniert die Aktualisierung nur, wenn ich die App neu starte und ich weiß nicht warum.Wie aktualisiert man ListView in Fragment, das mit BaseAdapter gefüllt ist?
Hier sind die Klassen:
Dies ist das Fragment mit dem Listview darauf, dass ich aktualisieren möchten, wenn der Dialog geschlossen wird.
public class RegisterListFragment extends Fragment {
public static final String TAG = "RegisterListFragment";
RegisterListAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
setRetainInstance(true);
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.act_select_list_fragment, container, false);
ListView list = (ListView) view.findViewById(R.id.register_list);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Intent i = new Intent(getActivity(), com.example.smartkasse.Act_Register.MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
TextView selectedRegisterTextView = (TextView) arg1.findViewById(R.id.title);
String selectedRegisterName = (String) selectedRegisterTextView.getText();
i.putExtra("selectedRegisterName", selectedRegisterName);
startActivity(i);
getActivity().finish();
}
});
adapter = new RegisterListAdapter(getActivity());
list.setAdapter(adapter);
return view;
}
public void refreshData() {
adapter.notifyDataSetChanged();
}
}
Und dies ist der Adapter ich die Liste füllen mit:
public class RegisterListAdapter extends BaseAdapter {
View view = null;
Database db = new Database(mContext);
data=db.getAlltitles();
if(convertView==null)
{
view = (View) inflater.inflate(R.layout.act__select_listview, null);
TextView title = (TextView) view.findViewById(R.id.title);
TextView artist = (TextView) view.findViewById(R.id.artist);
TextView duration = (TextView) view.findViewById(R.id.duration);
ImageView thumb_image = (ImageView) view.findViewById(R.id.list_image);
title.setText(data.get(position));
//artist.setText(data.get(position));
//duration.setText(data.get(position));
//thumb_image.setImageResource(R.drawable.ic_launcher);
return view;
}
else
{
TextView title = (TextView) convertView.findViewById(R.id.title);
TextView artist = (TextView) convertView.findViewById(R.id.artist);
TextView duration = (TextView) convertView.findViewById(R.id.duration);
ImageView thumb_image = (ImageView) convertView.findViewById(R.id.list_image);
title.setText(data.get(position));
// artist.setText(data.get(position));
// duration.setText(data.get(position));
//thumb_image.setImageResource(R.drawable.ic_launcher);
return convertView;
}
}
Und das ist die Haupt, die alles zusammenhält:
Wenn die positv-Taste des Dialog gedrückt wird, dann Neue Daten werden zu der Datenbank hinzugefügt, die ich möchte
in der listView "be Hinter "dem Dialog. Ich habe so viel versucht, aber ich habe es wirklich nicht verstanden. Hoffe, du kannst mir helfen.
Thanks :)
Es ist nicht gute Idee, Daten in UI-Thread zu laden. Werfen Sie einen Blick auf CursorLoader (http://developer.android.com/reference/android/content/CursorLoader.html) oder benutzerdefinierte AsyncTaskLoader. Um Ihr Problem einfach zu lösen, müssen Sie eine neue Instanz Ihres Adapters erstellen und auf ListView setzen. – JustAnotherCoder