構建一個選項卡式佈局,我有3個片段類,它們全部下載值爲JSON
並填充爲RecyclerView
。片段加載重複值,可能的原因?
現在問題是:當我在一個片段,並切換到另一個並返回到上了年紀,我看到重複第一,說如果我有一個片段一個卡,當我回到回,我得到兩張相同的卡片(複製)。
下面是代碼:
public class ReceiptFragment extends Fragment
{
private static String URL_FEE;
private List<FeePojo> fee = new ArrayList<FeePojo>();
private RecyclerView feeList;
CustomFeeAdapter feeAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.receipt, container, false);
feeAdapter = new CustomFeeAdapter(fee);
SharedPreferences pref = this.getActivity().getSharedPreferences("ActivitySession", Context.MODE_PRIVATE);
URL_FEE = " https://api.eduknow.info/mobile/fees/buttercup/"+pref.getString("MOB","");
Log.w("CHECK::",""+URL_FEE);
feeList = (RecyclerView)rootView.findViewById(R.id.rv_fee);
LinearLayoutManager llm = new LinearLayoutManager(getActivity());
feeList.setLayoutManager(llm);
feeList.setAdapter(feeAdapter);
JsonArrayRequest feeReq = new JsonArrayRequest(URL_FEE,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d("EDUKNOW::FEE", response.toString());
//hidePDialog();
SharedPreferences Tempx = getActivity().getSharedPreferences("ActivitySession", Context.MODE_PRIVATE);
SharedPreferences.Editor edx = Tempx.edit();
edx.putString("GSON_FEE", response.toString());
edx.apply();
Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonArray jArray = parser.parse(Tempx.getString("GSON_FEE","")).getAsJsonArray();
//ArrayList<MainPojo> uid = new ArrayList<MainPojo>();
for(JsonElement obj : jArray)
{
FeePojo cse = gson.fromJson(obj , FeePojo.class);
fee.add(cse);
}
Log.w("EDUKNO::CHECK",""+fee.get(0).getSchoolName());
feeAdapter.notifyDataSetChanged();
// Parsing json
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error)
{
SharedPreferences Tempx = getActivity().getSharedPreferences("ActivitySession", Context.MODE_PRIVATE);
Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonArray jArray = parser.parse(Tempx.getString("GSON_FEE","")).getAsJsonArray();
//ArrayList<MainPojo> uid = new ArrayList<MainPojo>();
for(JsonElement obj : jArray)
{
FeePojo cse = gson.fromJson(obj , FeePojo.class);
fee.add(cse);
feeAdapter.notifyDataSetChanged();
}
VolleyLog.d("EDUKNOW::::", "Error: " + error.getMessage());
//hidePDialog();
}
});
// Adding request to request queue
AppController.getInstance().addToRequestQueue(feeReq);
return rootView;
}
}
什麼可能是可能造成的?什麼是解決這個問題的最佳選擇?謝謝!
PS:沒有錯誤/警告在logcat的
試着清除的ArrayList即費,當你添加數據 –