gpt4 book ai didi

java - 如何获取回收者 View 中所有项目的总数

转载 作者:行者123 更新时间:2023-12-01 19:12:07 26 4
gpt4 key购买 nike

我有回收器 View 和旋转器处于 Activity 状态,具体取决于旋转器值发布请求已发送到服务器,之后填充回收器 View ,其中每行都有一些成本。我想添加每一行的成本。截图如下:

enter image description here

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

这是我的代码:

activity_select_pack.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>

SelectPack.java

@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();
}
});
}

});

}

ProductAdapter.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);
}
}
}

有人请告诉我如何获取并添加每行的总成本并将其显示在左下区域。任何帮助,将不胜感激。

谢谢

最佳答案

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

关于java - 如何获取回收者 View 中所有项目的总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59470852/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com