为什么循环会跳过值?

时间:2017-12-06 16:35:12

标签: javascript arrays

由于某种原因,我所拥有的循环是将每个第二个列表项从无序列表中删除,而不是删除每个列表项。我对此感到非常困惑。

代码:

`public class NewsFeeds extends Fragment {

DatabaseReference databaseReference;
private LinearLayoutManager layoutManager;

RecyclerView recyclerView;


RecyclerView.Adapter adapter ;


ProgressDialog progressDialog;


List<ImageUploadInfo> list = new ArrayList<>();


Context context,contextpuja ;
GridView gridViewPuja,gridViewAll,gridViewC;
View view;

public NewsFeeds() {

}


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

    context = getActivity();

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

    return view;
}



@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    final FragmentActivity fragmentActivity = getActivity();
    layoutManager = new LinearLayoutManager(fragmentActivity);

    recyclerView =  view.findViewById(R.id.recyclerView);


    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setHasFixedSize(true);
    progressDialog = new ProgressDialog(getActivity());


    progressDialog.setMessage("Loading Images From Firebase.");

     progressDialog.show();


    databaseReference = FirebaseDatabase.getInstance().getReference(Main2Activity.FB_Database_Path);


    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {

            for (DataSnapshot postSnapshot : snapshot.getChildren()) {

                ImageUploadInfo imageUploadInfo = postSnapshot.getValue(ImageUploadInfo.class);

                list.add(imageUploadInfo);
            }

            adapter = new RecyclerViewAdapter(getContext(), list);

            recyclerView.setAdapter(adapter);
            recyclerView.setHasFixedSize(true);

            progressDialog.dismiss();
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

                          progressDialog.dismiss();

        }
    });








}

按一下排序按钮的结果(在Chrome和Opera中)是:

“前往原因

布拉沃 三角洲 埃克森 6"

击中两次时的结果是:

“前往原因

德尔塔 3"

有谁知道为什么跳过模2n + 1的itemList数组中的列表项?

谢谢。

3 个答案:

答案 0 :(得分:2)

您正在从正在迭代的容器中删除项目。

如果删除项目,请取消i的增量。

答案 1 :(得分:0)

这是因为当您删除项目时,下一个项目的索引以及总计数会发生变化。不要使用增量器。试试这个:

product_type="ALL"

答案 2 :(得分:0)

当你开始循环遍历这个数组(伪代码)

[Alpha,Bravo,Charlie,Delta,Foxtrot,Exxon]

然后执行

removeChild(itemList[0])

所以你的数组是:

[Bravo,Charlie,Delta,Foxtrot,Exxon]

现在你继续执行:

removeChild(itemList[1])

所以你删除了Charlie元素(数组的元素1)。结果是:

[Bravo,Delta,Foxtrot,Exxon]

最终结果将是:

[Bravo,Delta,Exxon]

第二次点击该过程是相同的。