私itensを掛ける私はチェックリストによって呼び出された私のリストの中にある私の項目を、一覧表示するforeach
を使用しようとしていたが、それは私に同時変更によって呼び出されたエラーを得ました。だから、私はこのような解決策が見つかりました:RecyclerView - イテレータは
//...
List<Checklist> desc = new ArrayList<>();
for (Iterator<Checklist> it = checklists.iterator(); it.hasNext();) {
Checklist check = it.next();
desc.add(new Checklist(check.getDescricao()));
loadRecycler(desc);
}
//...
をしかし、今、私は他の問題を抱えて:私の項目は、私は、画面を開くたびに重複してきています。どうすればこの問題を解決できますか?以下のコード全体に従ってください:
CheckListsFragment
public class ChecklistFragment extends Fragment {
@BindView(R.id.checklist_rcv_itens)
RecyclerView rvLista;
@BindView(R.id.checklist_btn_novoitem)
Button btnAddItem;
int valor;
BancoDAO bDAO;
private Checklist checklist;
private List<Checklist> checklists;
private ListChecklistAdapter listChecklistAdapter;
public ChecklistFragment() {
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
bDAO = new BancoDAO(getContext());
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_checklist, container, false);
Log.i("LOG", "onCreate()");
ButterKnife.bind(this, view);
checklist = new Checklist();
checklists = bDAO.listAllItens();
//It works, but multiply my items
List<Checklist> desc = new ArrayList<>();
for (Iterator<Checklist> it = checklists.iterator(); it.hasNext();) {
Checklist check = it.next();
desc.add(new Checklist(check.getDescricao()));
loadRecycler(desc);
}
/* It works, but multiply my items too
for (Checklist checklist : new ArrayList<>(checklists)) {
loadRecycler(checklists);
} */
return view;
}
private int cont() {
return valor++;
}
// add 1 item to the list
@OnClick(R.id.checklist_btn_novoitem)
void addItem() {
checklists = new ArrayList<>();
checklists.add(new Checklist("Teste " + (cont() + 1) + ""));
bDAO.inserir(new Checklist("Teste " + (cont() + 1) + ""));
loadRecycler(checklists);
Helper.snackbarFast(getView(), "Item adicionado");
return;
}
private void loadRecycler(List<Checklist> lista) {
if (listChecklistAdapter == null) {
Log.i("LOG", "IF");
listChecklistAdapter = new ListChecklistAdapter(getActivity(), lista);
rvLista.setAdapter(listChecklistAdapter);
rvLista.setLayoutManager(new LinearLayoutManager(getActivity().getApplicationContext()));
rvLista.addItemDecoration(new DividerItemDecoration(getActivity(), 1));
return;
} else {
Log.i("LOG", "ELSE");
listChecklistAdapter.refreshData(lista);
}
}
あなたは、forループを使用してみましたか? – AndroidStorm
いいえ、私は...どうすればいいですか? –
投稿者 – AndroidStorm