【发布时间】:2018-02-27 01:43:49
【问题描述】:
在 TabHost 中,我有 2 个选项卡(2 个片段)。在 tab1 的 onCreateView 中,我有 recycleView.setAdapter。当我单击时,它会加载新数据,然后如果从 tab1 切换到 tab2 然后返回到 tab1,recycleView.setAdapter 会重新加载旧数据。
从 tab2 切换到 tab1 时,如何在 recycleView 中保留新数据?
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_position, container, false);
recyclerViewPosition = view.findViewById(R.id.recyclview);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
recyclerViewPosition.setLayoutManager(linearLayoutManager);
recyclerViewPosition.setHasFixedSize(true);
recyclerViewPosition.setAdapter(positionAdapter);
// searchView
searchView = view.findViewById(R.id.sview);
searchView.setOnQueryTextListener(new OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
final List<DataPosition> filteredModelList = filter(mPositionList, newText);
positionAdapter.setFilter(filteredModelList);
return true;
}
});
Call<Position> call = mApiService.getPositionList(strTokent);
call.enqueue(new Callback<Position>() {
@Override
public void onResponse(Call<Position> call, Response<Position> response) {
if (response.isSuccessful()) {
itemArrayList = response.body().getData().getItems();
mPositionList.clear();
dataPosition.clear();
/* put id and name to hashMap*/
for (int i = 0; i < itemArrayList.size(); i++) {
hashMap.put(itemArrayList.get(i).getName(), itemArrayList.get(i).getId());
}
for (int j = 0; j < itemArrayList.size(); j++) {
dataPosition.add(itemArrayList.get(j).getName());
}
for (String strPosition : dataPosition) {
mPositionList.add(new DataPosition(strPosition));
}
}
}
@Override
public void onFailure(Call<Position> call, Throwable t) {
}
});
return view;
}
【问题讨论】:
-
你试过 mAdapter.notifyDataSetChanged() 吗?
-
请把tab1中的一些代码放在CreateView上。
-
Faysal Ahmed - 我在 oncreateview() 方法中添加了所有代码
-
永远不要重新分配列表...
itemArrayList = response.body().getData().getItems()...您应该始终使用itemArrayList.addAll(...) -
cricket_007 - 但是当我返回 tab1 recycleview.setadater 时仍然加载旧数据
标签: android android-recyclerview android-tabhost