Java 单击片段中的后退按钮时,Listview正在更新

Java 单击片段中的后退按钮时,Listview正在更新,java,android,listview,android-fragments,Java,Android,Listview,Android Fragments,在这里,我试图从URL获取数据,并在片段A的Listview中显示。它工作得非常好。但在单击listview的项目时,它会导航到下一个片段B。当我使用后退按钮从片段B导航到片段A时,listview项目会再次更新。如果listview中有3个项目,并且用户从B导航到A 2次,则listview中的项目总数将为9。请帮助停止这种冗余 public class EnglishFragment extends Fragment { private List<DataItem> dat

在这里,我试图从URL获取数据,并在片段A的Listview中显示。它工作得非常好。但在单击listview的项目时,它会导航到下一个片段B。当我使用后退按钮从片段B导航到片段A时,listview项目会再次更新。如果listview中有3个项目,并且用户从B导航到A 2次,则listview中的项目总数将为9。请帮助停止这种冗余

public class EnglishFragment extends Fragment {


 private List<DataItem> dataFeed= new ArrayList<DataItem>();
    ListView listView;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        final ArrayAdapter<DataItem> adapter = new EnglishFragment.Adapter();

        View view;

        view =  inflater.inflate(R.layout.fragment_topic2,container,false);

        RequestQueue queue = Volley.newRequestQueue(getActivity());
        // JsonObjectRequest myReq= new JsonObjectRequest(Request.Method.GET,

        listView = view.findViewById(R.id.listview);
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, **URL**, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            JSONArray dataArray = response.getJSONArray("topic");
                            Log.i("Temp",""+dataArray.length());
                            for(int i=0;i<dataArray.length();i++) {
                                JSONObject temp = dataArray.getJSONObject(i);
                                Log.i("Temp",temp.toString());


                                String first_name = temp.getString("name");
                                String last_name = temp.getString("details");
                                String image_path =temp.getString("img_path");;
                                String chapter_path = temp.getString("url");
                                Log.i("Image",temp.getString("url"));

                                dataFeed.add(new DataItem(first_name,last_name," "," ", image_path,chapter_path));
                                adapter.notifyDataSetChanged();
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });
        jsonObjectRequest.setRetryPolicy( new DefaultRetryPolicy(10000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

        queue.add(jsonObjectRequest);

        listView.setAdapter( adapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

                DataItem currentItem = dataFeed.get(position);

                Log.v("position", currentItem.getImageURL());
                Toast.makeText(getActivity(), currentItem.getChapterURL(), Toast.LENGTH_SHORT).show();
                MainActivity mainActivity = (MainActivity)getActivity();
                mainActivity.getChapterList(currentItem.getChapterURL());

            }

        });


       return view;
    }
    private class Adapter extends ArrayAdapter<DataItem> {

        public Adapter() {
            super(getActivity(), R.layout.data_items,dataFeed);
        }


        @NonNull
        @Override
        public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {

            if (convertView == null)
            {
                convertView = getLayoutInflater().inflate(R.layout.data_items,null,false);

            }

            DataItem currentItem = dataFeed.get(position);
            TextView heading = (TextView)convertView.findViewById(R.id.subject_name);
            TextView desc = (TextView)convertView.findViewById(R.id.subject_details);
            ImageView imageView = (ImageView)convertView.findViewById(R.id.leftIcon);


            heading.setText(currentItem.getNewsHeading() + " ");
            desc.setText(Html.fromHtml(currentItem.getNewsDesc()));
            imageView.setImageResource(currentItem.getImageId());
            Picasso.get().load(currentItem.getImageURL()).into(imageView);

            return convertView;
        }
    }

在添加新数据之前清除数据源列表。。。
dataFeed.clear()

是否在每次
片段启动时调用的方法中将项目添加到列表中?如果是,则在导航过程中会多次添加它们。看一看……它成功了!这帮了大忙。我非常感谢你的帮助,伙计!
public void getChapterList(String ChapterURL ){

    FragmentManager fragmentManager  = getSupportFragmentManager();
    android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    ChapterListFragment chapterListFragment = new ChapterListFragment();

        Bundle bundle = new Bundle();
        bundle.putString("url",ChapterURL);
        chapterListFragment.setArguments(bundle);
        fragmentTransaction.replace(R.id.frame_container,chapterListFragment).addToBackStack(null)
        .commit();



}