Chcę odświeżyć ListView w Fragment po zamknięciu okna dialogowego. Do tej pory odświeżanie działa tylko po ponownym uruchomieniu aplikacji i naprawdę nie wiem dlaczego.Jak odświeżyć ListView w Fragment wypełniony BaseAdapter?
Oto klas:
Jest to fragment z ListView na to, że chcę, aby odświeżyć, gdy okno jest zamknięte.
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();
}
}
I to jest adapter wypełnić listę z:
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;
}
}
I to jest główna, która posiada wszystko razem:
gdy przycisk positv okna dialogowego zostanie naciśnięty, a następnie nowe Dane są dodawane do bazy danych, które chcę, aby aby zobaczyć na liścieView "be "dialog". Tak bardzo próbowałem, ale naprawdę tego nie rozumiem. Mam nadzieję, że możesz mi pomóc.
Dzięki :)
To nie jest dobry pomysł, aby załadować dane w wątku UI. Zapoznaj się z CursorLoader (http://developer.android.com/reference/android/content/CursorLoader.html) lub niestandardowym AsyncTaskLoader. Aby po prostu rozwiązać problem, musisz utworzyć nową instancję adaptera i ustawić go na ListView – JustAnotherCoder