我有一個包含使用BaseAdapter創建了三個ListView的三個片段。像下面的圖片:適配器,片段和SQLite數據基座之間通信以刷新片段
反正我的ListView是從SqliteDatabase獲取數據。我需要知道的是:當我從ListView中刪除一個項目時我的(收藏夾,拒絕)片段ListViews不會被通知,也不會刷新。
我迄今爲止嘗試是:
呼叫listView.invalidateViews()
notifyDataSetChanged()
後,我的片段onResume()
方法。
我嘗試了這些解決方案二Android ListView not refreshing after notifyDataSetChanged
我的代碼是: 在我的BaseAdapter我'使用這些方法來刷新我的適配器:
public void UpdateView(List<Voiture> items)
{
this.voitureList = items;
notifyDataSetChanged();
}
在我的片段,我'使用這些方法使用
@Override
public void onResume() {
super.onResume();
adapterLogin.UpdateView(databaseHelper.getAllVoiture(username,currentLength));
listView.setAdapter(new AdapterLogin(getActivity(),voitureList,username,currentLength,1));
}
在OncreateView()方法我':通知適配器
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
inflate = inflater ;
x = inflater.inflate(R.layout.fragemnt_favoris,null);
empty = (TextView) x.findViewById(R.id.texteempty);
listView = (ListView) x.findViewById(R.id.list);
activity = (Main2Activity) getActivity() ;
username = activity.getUsername();
databaseHelper = new DatabaseHelper(getActivity());
databaseHelper.InsertActivity(2,username);
voitureList = databaseHelper.getAllVoitureFavourite(1,username);
adapterLogin = new AdapterLogin(getActivity(),voitureList,username,currentLength,2);
if (voitureList.size()>0)
{
listView.setAdapter(adapterLogin);
((BaseAdapter)listView.getAdapter()).notifyDataSetChanged();
}
else
{
empty.setVisibility(View.VISIBLE);
}
// Inflate the layout for this fragment
return x;
}
任何幫助將不勝感激。
你爲什麼不只是使用與事件通知您的應用程序的不同部分事件總線庫?這些庫是:奧托,EventBus,RxBus,Android的... :) – Seishin
嗨Ahlem,你嘗試過使用notifyDataSetInvaldated()呢?來源:https://developer.android.com/reference/android/widget/BaseAdapter.html#notifyDataSetInvalidated() – Paul
@保羅:是的,我使用notifyDataSetInvalda泰德(),但它並沒有對我的工作! –