I'm making an application focused on external vendors. 1 external seller has several customers, and also various products, which is freely marketed with these customers. These products do not always remain in the same value (discounts, taxes, etc.), so the application has a calculations function.
Briefly: 1 customer has N products, and N products have N calculations.
However, I caught on a part of my project that I need to display all the calculations of a respective product from a respective customer. Well, my code so far is this :
private List<Integer> ids;
private List<Integer> allValues;
private List<Calculos> calculosItems;
private List<Calculos> produtosSemRedundancia; //usado para exibir na ListView
private List<Calculos> RemoverDuplicados()
{
//inicializa as variáveis
allValues.clear();
idQuantidadeProdutos.clear();
idQuantidadeCalculos.clear();
//separa os cálculos repetidos e envia para a lista auxiliar;
for(Calculos i : calculosItems)
{
int valor = Integer.parseInt(i.getId_produto());
if (valor == 1)
{
Log.d(TAG, "encontrei o ID 1! ADDing calc: " + i.get_id());
testeList.put(valor, new ArrayList<Integer>(i.get_id()));
}
//Exibindo todos os produtos & os respectivos cálculos que estão dentro do ID produtos.
Log.d(TAG, "X Produto ID: " + i.getId_produto() + "- Calculo ID: " + i.get_id());
allValues.add(Integer.valueOf(i.getId_produto()));
//se variável 'ids' não tiver o valor do ID do produto, eu adiciono aqui
if(!ids.contains(Integer.valueOf(i.getId_produto())))
{
testeList.put(Integer.valueOf(i.getId_produto()), new ArrayList<Integer>(i.get_id()));
produtosSemRedundancia.add(i);
ids.add(Integer.valueOf(i.getId_produto()));
}
}
try
{
//identifica quantos cálculos cada produto tem & adiciona no Map "idQuantidadeProdutos".
for (Integer id : ids)
{
idQuantidadeProdutos.put(id, Collections.frequency(allValues, id));
}
}catch(IndexOutOfBoundsException e){}
//aqui eu exibo todos meus produtos e quanto cálculos cada produto tem. O ideal seria exibir qual é o ID de cada
//um destes cálculos.
final String format = "Produto ID: %d possui: %d calculos";
final Set<Integer> chaves = idQuantidadeProdutos.keySet(); // as chaves são os ids
for (final Integer chave : chaves)
Log.d(TAG, String.format(format, chave, idQuantidadeProdutos.get(chave)));
return produtosSemRedundancia;
}
These are the values:
Produto ID: 1- Calculo ID: 14
Produto ID: 1- Calculo ID: 15
Produto ID: 1- Calculo ID: 16
Produto ID: 2- Calculo ID: 17
Produto ID: 8- Calculo ID: 18
Produto ID: 8- Calculo ID: 19
Produto ID: 8- Calculo ID: 20
Produto ID: 2- Calculo ID: 21
Produto ID: 6- Calculo ID: 23
Produto ID: 6- Calculo ID: 24
Produto ID: 6- Calculo ID: 25
Produto ID: 4- Calculo ID: 26
Produto ID: 1- Calculo ID: 27
And this is the output that says what the product ID is & how many calculations it has, as follows:
Produto ID: 4 possui: 1 calculos
Produto ID: 8 possui: 3 calculos
Produto ID: 1 possui: 4 calculos
Produto ID: 6 possui: 3 calculos
Produto ID: 2 possui: 2 calculos
The problem is that each of these calculations has an ID, and I do not know how to store them within my logic and search them afterwards (passing the customer ID and product ID, hence it returns all IDs of calculations).
For example, if the customer clicked on the ID 1 product, he would have to return this:
Product ID: 1 has: 4 calculations with IDs: [14, 15, 16, 27]
Can anyone help me or suggest something, please? I've been lost for days. Thank you.