forループを繰り返し実行することによってリスト内の価格の合計を計算していますが、リスト内の合計も返します。あなたが理解していない場合、これは私のコードでリストをループする試みです。リストを反復処理した後に1つの合計を取得する
public class CartAdapter extends ArrayAdapter<Cart> {
private Activity context;
private List<Cart> carts;
public CartAdapter(@NonNull Activity context, ArrayList<Cart> carts) {
super(context, R.layout.cart_list_item, carts);
this.carts = carts;
this.context = context;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View cartViewItems = inflater.inflate(R.layout.cart_list_item, null, false);
TextView textViewName = cartViewItems.findViewById(R.id.cart_item);
TextView textViewPrice = cartViewItems.findViewById(R.id.cart_price);
ImageView imageViewCart = cartViewItems.findViewById(R.id.cart_img);
Cart cart = carts.get(position);
textViewName.setText(cart.getName());
textViewPrice.setText(String.valueOf(cart.getPrice()));
Picasso.with(context).load(cart.getImg()).into(imageViewCart);
countCart(textViewPrice);
return cartViewItems;
}
public double countCart(TextView textViewPrice){
double sum = 0.0;
for (int i = 0; i < carts.size(); i++) {
sum = sum + Double.parseDouble(textViewPrice.getText().toString());
}
System.out.println("Count Price: " + sum);
return sum;
}
}
と、現時点での私のリストのサイズは、内部に2つの項目があり、これはそれのために出力されます。
08-10 09:38:15.771 6285から6285/com.zack.tinga.applicationtest I /のSystem.out:23.98
08-10 09:38:価格をカウント15.790 6285から6285 /com.zack.tinga.applicationtest I/System.outには:価格をカウント:23.98
価格が正しいですが、問題は、それはリストのサイズを使用して合計を返すことです。リストを反復処理した後、ただ1つの合計を返すようにするにはどうすればよいですか。例えばリストのサイズが15であれば、合計で15回の出力が出力に出力されます。これは一度出力するだけです。
これはアプリケーションのスクリーンショットである:
だから、()をはlist.sizeない、単一の合計を表示すべきです。それは現在のようです。
あなたのフルコードは2回呼び出すことができます。 –
これは意味をなさないものです。リストのどこを反復していますか?あなたが私たちに何を示していないのですか? –
@DawoodibnKareem forループは、リストを反復処理するために使用されます。 – Zack