由于某种原因,我所拥有的循环是将每个第二个列表项从无序列表中删除,而不是删除每个列表项。我对此感到非常困惑。
代码:
`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数组中的列表项?
谢谢。
答案 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]
第二次点击该过程是相同的。