-1
I have the block below that adds a list of Products to a Campaign
recyclerProdutos.addOnItemTouchListener(new RecyclerItemClickListener(
this,
recyclerProdutos,
new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
}
@Override
public void onLongItemClick(View view, final int position) {
new AlertDialog.Builder(CampanhaActivity.this).
setTitle("Adicionar Produto").
setMessage("Deseja adicionar esse produto?").
setPositiveButton("Sim", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Produto produtoSelecionado = produtos.get(position);
ProdutosCampanha produtoCampanha = new ProdutosCampanha();
produtoCampanha.setUid(UUID.randomUUID().toString());
produtoCampanha.setUidProduto(produtoSelecionado.getUid());
produtoCampanha.setNomeProCampanha(produtoSelecionado.getNome());
produtoCampanha.setDescProdCampanha(produtoSelecionado.getDescricao());
if (campanhaRecuperada == null) {
campanhaRecuperada = new Campanha(idInstituicao);
produtoCampanha.setUidCampanha(campanhaRecuperada.getUid());
}
produtosCampanha.add(produtoCampanha);
campanhaRecuperada.setItens(produtosCampanha);
produtoCampanha.setUidCampanha(campanhaRecuperada.getUid());
adapterProdutosCampanha = new AdapterProdutosCampanha(produtosCampanha,CampanhaActivity.this);
recyclerProdutosCampanhaAdd.setLayoutManager(new LinearLayoutManager(CampanhaActivity.this));
recyclerProdutosCampanhaAdd.setHasFixedSize(true);
recyclerProdutosCampanhaAdd.setAdapter(adapterProdutosCampanha);
}
}).
setNegativeButton("Não", null).show();
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
}
}
)
);
By adding the products to the campaign this way, in Firebase the object is saved this way as the image attached.
To remove have the method below, in which the removal is performed, however there is a problem:
private void removeProdutoCampanha(final int position) {
new AlertDialog.Builder(context)
.setTitle("Remover Produto")
.setMessage("Deseja remover esse Produto da Campanha?")
.setPositiveButton("Sim", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
ProdutosCampanha produto = new ProdutosCampanha();
ProdutosCampanha produtosCampanhaAdd = produtosCampanha.get(position);
produtosCampanha.remove(produto);
removeProduto(position,uidProCamp);
produtosCampanha.remove(position);
notifyItemRemoved(position);
}
})
.setNegativeButton("Não",null).show();
}
private void removeProduto(,int position,String uidProCamp) {
produtoCampanhaRef = ConfiguracaoFirebase.getFirebase().child("Campanha").child(idCampanha).child("itens").child(String.valueOf(position));
produtoCampanhaRef.removeValue();
}
Example: If I delete the item with heading 01 from the list, in Firebase this item 01 is deleted getting item 0 ,2 ,3 ,4
as shown below
that is if next time I pass position 02, it will not exist and I will not be able to exclude.
I am unable to access a specific item to delete.
Remove List of Items within a Campaign - Firebase + Android Studio
I did just that. In the removeProduct method, I removed the product in position. Since the save method is in another class it was necessary to do a for in Adapter, to return the updated Adapter items and added these items in a new list and saved this new list. Not if it’s the best way to do it, have it on the Adapter, but the way I structured the code was the exit I found. Thank you very much
– gpand
It’s not the best way to do it, but it takes advantage of your code. To improve I suggest you read the article on the link https://firebase.google.com/docs/database/android/read-and-write?hl=pt-br#read_data_once
– juliano santos
I’ll read it. Thanks for your help
– gpand