繁体   English   中英

如何在回收站视图中获取所有项目的总数

[英]How to get total of all items in recycler view

根据微调器值发布请求,我有回收器视图和微调器处于活动状态,然后将回收器视图填充到服务器中,其中每一行都有一定的成本。 我想添加每一行的成本。 截图如下:

在此处输入图片说明

在屏幕截图中,我们可以看到数量为 2,成本为 40,就像另一行也有一些价值。所以我想从每一行添加所有这些成本,并将其显示在写入ToTAL左下方区域。

这是我的代码:

活动选择包.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SelectPack">

<ProgressBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/progress"
    android:layout_centerInParent="true"/>

<androidx.cardview.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="100dp"
    app:cardUseCompatPadding="true"
    app:cardCornerRadius="3dp"
    android:layout_margin="16dp"
    android:id="@+id/marketCard"
    app:cardBackgroundColor="@color/colorPrimary">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="8dp">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="#fff"
        android:textSize="15sp"
        android:id="@+id/textMarket"
        android:text="Select Market Name"/>

    <Spinner
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="2dp"
        android:layout_below="@+id/textMarket"
        android:id="@+id/marketSpinner"
        android:layout_marginTop="25dp"
        android:background="@drawable/spinner_back"/>

</RelativeLayout>

</androidx.cardview.widget.CardView>

<androidx.recyclerview.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    android:id="@+id/products"
    android:layout_below="@+id/marketCard"
    android:visibility="invisible"
    android:layout_above="@+id/totalLayout"
    android:layout_marginBottom="3dp"/>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_alignParentBottom="true"
    android:background="@color/colorPrimary"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:id="@+id/totalLayout">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:padding="10dp"
        android:background="@drawable/spinner_back"
        android:text="Total:00.00"
        android:layout_centerVertical="true"/>


    <Button
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:padding="8dp"
        android:background="@drawable/login_but"
        android:layout_centerVertical="true"
        android:layout_alignParentRight="true"
        android:text="Generate bill"
        android:textSize="12sp"
        android:textColor="#fff"/>

</RelativeLayout>   

</RelativeLayout>

selectpack_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">

<androidx.cardview.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardCornerRadius="3dp"
    app:cardUseCompatPadding="true"
    app:cardBackgroundColor="#fff">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Crown"
            android:layout_margin="10dp"
            android:id="@+id/marketName"
            android:textSize="18sp"
            android:textColor="@color/colorPrimary"/>

        <View
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:id="@+id/view1"
            android:layout_below="@+id/marketName"
            android:background="#adadad"/>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Product No."/>

         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="300"
             android:id="@+id/productNo"
             android:textColor="@color/colorPrimary"
             android:layout_alignParentRight="true"/>

            <View
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="10dp"
                android:layout_below="@+id/productNo"
                android:background="#adadad"/>

        </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Page"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="300"
                android:id="@+id/page"
                android:textColor="@color/colorPrimary"
                android:layout_alignParentRight="true"/>

            <View
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="10dp"
                android:layout_below="@+id/page"
                android:background="#adadad"/>

        </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="MRP"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="300"
                android:id="@+id/mrp"
                android:textColor="@color/colorPrimary"
                android:layout_alignParentRight="true"/>

            <View
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="10dp"
                android:layout_below="@+id/mrp"
                android:background="#adadad"/>

        </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Inner pack"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="300"
                android:id="@+id/innerPack"
                android:textColor="@color/colorPrimary"
                android:layout_alignParentRight="true"/>

            <View
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="10dp"
                android:layout_below="@+id/innerPack"
                android:background="#adadad"/>

        </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Outer pack"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="300"
                android:id="@+id/outerPack"
                android:textColor="@color/colorPrimary"
                android:layout_alignParentRight="true"/>


        </RelativeLayout>


        <View
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:layout_marginTop="10dp"
            android:layout_below="@+id/innerPack"
            android:background="#adadad"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp">

            <Spinner
                android:layout_width="50dp"
                android:layout_height="wrap_content"
                android:layout_margin="10dp"
                android:id="@+id/qtySpinner"
                android:background="@drawable/qty_spinner"
                android:layout_weight="1"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="TOTAL"
                android:id="@+id/total"
                android:layout_weight="1"/>

            <Button
                android:layout_width="50dp"
                android:layout_height="30dp"
                android:text="ORDER"
                android:id="@+id/order"
                android:textColor="#fff"
                android:background="@drawable/login_but"
                android:layout_weight="1"/>

        </LinearLayout>

    </LinearLayout>


</androidx.cardview.widget.CardView>

选择包

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_select_pack);

    fAuth = FirebaseAuth.getInstance();

    ActionBar ab = getSupportActionBar();
    assert ab!= null;
    ab.setTitle("Select Pack");
    ab.setDisplayHomeAsUpEnabled(true);

    marketSpinner = findViewById(R.id.marketSpinner);
    progress = findViewById(R.id.progress);
    products = findViewById(R.id.products);

    products.setHasFixedSize(true);
    products.setLayoutManager(new LinearLayoutManager(this));

    productList = new ArrayList<>();

    List<String> categories = new ArrayList<String>();
    categories.add("Select market");
    categories.add("Crown");
    categories.add("Long Book A4");
    categories.add("Long Book");

    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);

    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    marketSpinner.setAdapter(dataAdapter);

    marketSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

            String item = adapterView.getItemAtPosition(i).toString();

            if(item.equals("Select market")){
                progress.setVisibility(View.INVISIBLE);
            }
            else{

                getData(item);
            }

        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });
}

private void getData(String item){

     progress.setVisibility(View.VISIBLE);
     products.setVisibility(View.INVISIBLE);

     productList.clear();

    OkHttpClient client = new OkHttpClient.Builder()
            .connectTimeout(20, TimeUnit.SECONDS)
            .readTimeout(20,TimeUnit.SECONDS)
            .writeTimeout(20,TimeUnit.SECONDS)
            .build();

    RequestBody formBody = new FormBody.Builder()
            .add("name",item)
            .build();

    Request request = new Request.Builder().post(formBody).url(URL).build();

    client.newCall(request).enqueue(new Callback() {

        @Override
        public void onResponse(@NotNull Call call, @NotNull final Response response) throws IOException {

            runOnUiThread(new Runnable() {
                @Override
                public void run() {

                    try {

                        JSONArray jsonArray = new JSONArray(response.body().string());

                        if(jsonArray.length() > 0){

                           products.setVisibility(View.VISIBLE);
                            progress.setVisibility(View.INVISIBLE);

                        }

                        for(int i=0;i<jsonArray.length();i++){

                            progress.setVisibility(View.INVISIBLE);


                            JSONObject object = jsonArray.getJSONObject(i);

                            String str1 = object.getString("market");
                            String str2 = object.getString("product_no");
                            String str3 = object.getString("page");
                            String str4 = object.getString("mrp");
                            String str5 = object.getString("inner_pack");
                            String str6 = object.getString("outer_pack");

                            Log.d("prod",str2);

                            ProductsModel model = new ProductsModel(str1,str2,str3,str4,str5,str6);

                            productList.add(model);
                        }

                        ProductAdapter adapter = new ProductAdapter(getApplicationContext(),productList);
                        products.setAdapter(adapter);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            });
        }

        @Override
        public void onFailure(@NotNull Call call, @NotNull final IOException e) {

            runOnUiThread(new Runnable() {
                @Override
                public void run() {

                    progress.setVisibility(View.INVISIBLE);
                    products.setVisibility(View.INVISIBLE);

                    Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_SHORT).show();
                }
            });
        }

    });

}

产品适配器.java

public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ViewHolder> {

private Context context;
private List<ProductsModel> productList;

public ProductAdapter(Context context, List<ProductsModel> productList) {
    this.context = context;
    this.productList = productList;
}

@NonNull
@Override
public ProductAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.selectpack_layout,parent,false);

    ViewHolder viewHolder = new ViewHolder(v);

    return viewHolder;
}

@Override
public void onBindViewHolder(@NonNull final ProductAdapter.ViewHolder holder, int position) {

    final ProductsModel model = productList.get(position);

    holder.marketName.setText(model.getMarketName());
    holder.productNo.setText(model.getProductNo());
    holder.page.setText(model.getPage());
    holder.mrp.setText(model.getMrp());
    holder.innerPack.setText(model.getInnerPack());
    holder.outerPack.setText(model.getOuterPack());

    List<String> qty = new ArrayList<>();
    qty.add("Select qty");
    qty.add("1");
    qty.add("2");
    qty.add("3");
    qty.add("4");
    qty.add("5");
    qty.add("6");
    qty.add("7");
    qty.add("8");
    qty.add("9");
    qty.add("10");

    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, qty);

    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    holder.qtySpinner.setAdapter(dataAdapter);

    holder.qtySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

            String item = adapterView.getItemAtPosition(i).toString();

            if(!item.equals("Select qty")){

            int qty = Integer.parseInt(item);

            int cost = Integer.parseInt(model.getMrp());

            int val = cost * qty;

            holder.total.setText(String.valueOf(val));

            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });
}

@Override
public int getItemCount() {
    return productList.size();
}



public class ViewHolder extends RecyclerView.ViewHolder{

    TextView  marketName,productNo,page,mrp,innerPack,outerPack,total;
    Spinner qtySpinner;
    Button order;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);

        order = itemView.findViewById(R.id.order);
        qtySpinner = itemView.findViewById(R.id.qtySpinner);
        marketName = itemView.findViewById(R.id.marketName);
        productNo = itemView.findViewById(R.id.productNo);
        page = itemView.findViewById(R.id.page);
        mrp = itemView.findViewById(R.id.mrp);
        innerPack = itemView.findViewById(R.id.innerPack);
        outerPack  = itemView.findViewById(R.id.outerPack);
        total = itemView.findViewById(R.id.total);
      }
   }
}

有人请让我知道如何从每一行中获取和添加总成本并将其显示在左下方区域。 任何帮助,将不胜感激。

谢谢

您可以使用数组并在其中附加每个单元格的值并且永远不会清除它,然后在您的适配器中创建一个返回此数组的函数,在这里您可以添加它的项目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM