Java Recyclerview中每个项目行的增量和减量值
我需要在RecyclerView中的textview的递增值和递减值中获得不同的值。首先,我将第一行中的值设置为2,在下一行中,当我按下ADD按钮时,数字显示为3。这对我来说是个大问题。所以请帮我找到解决这个问题的办法Java Recyclerview中每个项目行的增量和减量值,java,android,Java,Android,我需要在RecyclerView中的textview的递增值和递减值中获得不同的值。首先,我将第一行中的值设置为2,在下一行中,当我按下ADD按钮时,数字显示为3。这对我来说是个大问题。所以请帮我找到解决这个问题的办法 package com.i.menu; import android.content.Context; import android.media.Image; import android.os.Build; import android.util.Base64; impor
package com.i.menu;
import android.content.Context;
import android.media.Image;
import android.os.Build;
import android.util.Base64;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import static java.text.DateFormat.DEFAULT;
public class sacAdapter extends RecyclerView.Adapter<sacAdapter.MyViewHolder>
implements Filterable {
private Context context;
private List<SAClist> SaCList;
private List<SAClist> SACListFiltered;
CheckBox check;
Double a;
int b;
int c;
Double d;
Double e;
Double value5;
private SACAdapterListener listener;
private DecimalFormat df2 = new DecimalFormat("#############.##");
private DecimalFormat df = new DecimalFormat("0.#");
private int number = 0;
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView ProName, Rate, Qty, Total;
public ImageView thumbnail;
public Button Qty1,Qty2;
// public ImageView thumbnail;
public MyViewHolder(View view) {
super(view);
ProName = view.findViewById(R.id.ProName);
Rate = view.findViewById(R.id.Rate);
Qty = view.findViewById(R.id.Qty);
check = view.findViewById(R.id.check);
Total = view.findViewById(R.id.Total);
Qty1 = view.findViewById(R.id.Qty1);
Qty2 = view.findViewById(R.id.Qty2);
thumbnail = view.findViewById(R.id.thumbnail);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// send selected contact in callback
listener.onSACSelected(SACListFiltered.get(getAdapterPosition()));
}
});
}
}
public sacAdapter(Context context, List<SAClist> sacList, SACAdapterListener listener) {
this.context = context;
this.listener = listener;
this.SaCList = sacList;
this.SACListFiltered = sacList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent1, int viewType1) {
View itemView = LayoutInflater.from(parent1.getContext())
.inflate(R.layout.sac_item_row, parent1, false);
return new MyViewHolder(itemView);
}
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) {
final SAClist saclist = SACListFiltered.get(position);
holder.ProName.setText(saclist.getPName());
holder.Rate.setText("Rate : "+saclist.getPRate());
String Ra = saclist.PRate;
double value1 = Ra.isEmpty() ? 0.0 : Double.parseDouble(Ra);
String TOT1 = holder.Qty.getText().toString().trim();
final double value3 = TOT1.isEmpty() ? 0.0 : Double.parseDouble(TOT1);
a= value1*value3;
String stringValue35 = Double.toString(Double.parseDouble(df2.format(a)));
holder.Total.setText("TOTAL : "+stringValue35);
byte[] decoder = Base64.decode(saclist.getPImage(),DEFAULT );
Glide.with(context)
.load(decoder)
.apply(RequestOptions.noTransformation())
.into(holder.thumbnail);
holder.Qty1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
number++;
holder.Qty.setText(""+number);
////////////////////////////
String Ra = saclist.PRate;
double value1 = Ra.isEmpty() ? 0.0 : Double.parseDouble(Ra);
String TOT5 = holder.Qty.getText().toString().trim();
value5 = TOT5.isEmpty() ? 0.0 : Double.parseDouble(TOT5);
a= value1*value5;
String stringValue35 = Double.toString(Double.parseDouble(df2.format(a)));
holder.Total.setText("TOTAL : "+stringValue35);
}
});
holder.Qty2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(number<=0){
number = 0;
}else {
number--;
holder.Qty.setText("" + number);
}
/////////////////////////////////
String Ra = saclist.PRate;
double value1 = Ra.isEmpty() ? 0.0 : Double.parseDouble(Ra);
String TOT = holder.Qty.getText().toString().trim();
double value2 = TOT.isEmpty() ? 0.0 : Double.parseDouble(TOT);
a= value1*value2;
String stringValue35 = Double.toString(Double.parseDouble(df2.format(a)));
holder.Total.setText("TOTAL : "+stringValue35);
}
});
}
@Override
public int getItemCount() {
return SACListFiltered.size();
}
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
String charString = charSequence.toString();
if (charString.isEmpty()) {
SACListFiltered = SaCList;
} else {
List<SAClist> filteredList = new ArrayList<>();
for (SAClist row : SaCList) {
// name match condition. this might differ depending on your requirement
// here we are looking for name or phone number match
if (row.getPName().toLowerCase().contains(charString.toLowerCase())) {
filteredList.add(row);
}
}
SACListFiltered = filteredList;
}
FilterResults filterResults = new FilterResults();
filterResults.values = SACListFiltered;
return filterResults;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
SACListFiltered = (ArrayList<SAClist>) filterResults.values;
notifyDataSetChanged();
}
};
}
public interface SACAdapterListener {
void onSACSelected(SAClist sac);
}
}
package com.i.菜单;
导入android.content.Context;
导入android.media.Image;
导入android.os.Build;
导入android.util.Base64;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.Button;
导入android.widget.CheckBox;
导入android.widget.Filter;
导入android.widget.Filterable;
导入android.widget.ImageView;
导入android.widget.TextView;
导入android.widget.Toast;
导入androidx.annotation.NonNull;
导入androidx.annotation.RequiresApi;
导入androidx.recyclerview.widget.recyclerview;
导入com.bumptech.glide.glide;
导入com.bumptech.glide.request.RequestOptions;
导入java.io.ByteArrayInputStream;
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入java.text.DecimalFormat;
导入java.util.ArrayList;
导入java.util.List;
导入静态java.text.DateFormat.DEFAULT;
公共类sacAdapter扩展了RecyclerView.Adapter
可过滤的{
私人语境;
私人名单;
私有列表过滤;
复选框检查;
双a;
int b;
INTC;
双d;
双e;
双重价值5;
专用SACAdapterListener侦听器;
private DecimalFormat df2=新的DecimalFormat(“##############”;
私有DecimalFormat df=新的DecimalFormat(“0.#”);
私有整数=0;
公共类MyViewHolder扩展了RecyclerView.ViewHolder{
公共文本视图项目名称、费率、数量、总数;
公共图像视图缩略图;
公共按钮Qty1、Qty2;
//公共图像视图缩略图;
公共MyViewHolder(视图){
超级(视图);
ProName=view.findViewById(R.id.ProName);
速率=view.findViewById(R.id.Rate);
数量=查看findViewById(R.id.Qty);
check=view.findViewById(R.id.check);
总计=view.findViewById(R.id.Total);
Qty1=view.findviewbyd(R.id.Qty1);
Qty2=view.findviewbyd(R.id.Qty2);
缩略图=view.findViewById(R.id.缩略图);
view.setOnClickListener(新的view.OnClickListener(){
@凌驾
公共void onClick(视图){
//在回拨中发送所选联系人
onSACSelected(SACListFiltered.get(getAdapterPosition());
}
});
}
}
公共sacAdapter(上下文上下文、列表sacList、SACAdapterListener侦听器){
this.context=上下文;
this.listener=listener;
this.SaCList=SaCList;
this.SACListFiltered=sacList;
}
@凌驾
public MyViewHolder onCreateViewHolder(视图组parent1,int viewType1){
View itemView=LayoutInflater.from(parent1.getContext())
.充气(R.layout.sac_item_row,parent1,false);
返回新的MyViewHolder(itemView);
}
@RequiresApi(api=Build.VERSION\u CODES.O)
@凌驾
public void onBindViewHolder(@NonNull final MyViewHolder holder,final int position){
最终SAClist SAClist=SACListFiltered.get(位置);
holder.ProName.setText(saclist.getPName());
holder.Rate.setText(“Rate:+saclist.getPRate());
字符串Ra=saclist.PRate;
double value1=Ra.isEmpty()?0.0:double.parseDouble(Ra);
String TOT1=holder.Qty.getText().toString().trim();
最终双精度值3=TOT1.isEmpty()?0.0:double.parseDouble(TOT1);
a=值1*3;
stringValue35=Double.toString(Double.parseDouble(df2.format(a));
holder.Total.setText(“总计:+stringValue35”);
字节[]解码器=Base64.decode(saclist.getPImage(),默认值);
带(上下文)滑动
.load(解码器)
.apply(RequestOptions.notTransformation())
.插入(支架.缩略图);
holder.Qty1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
数字++;
支架数量setText(“+编号);
////////////////////////////
字符串Ra=saclist.PRate;
double value1=Ra.isEmpty()?0.0:double.parseDouble(Ra);
String TOT5=holder.Qty.getText().toString().trim();
value5=TOT5.isEmpty()?0.0:Double.parseDouble(TOT5);
a=值1*5;
stringValue35=Double.toString(Double.parseDouble(df2.format(a));
holder.Total.setText(“总计:+stringValue35”);
}
});
holder.Qty2.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
如果(数字请尝试这种方法
获取特定的holdereditText
值并增加/减少该值
holder.Qty1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
number = Integer.parseInt(holder.Qty.getText().toString());
number++;
holder.Qty.setText(""+number);
////////////////////////////
String Ra = saclist.PRate;
double value1 = Ra.isEmpty() ? 0.0 : Double.parseDouble(Ra);
String TOT5 = holder.Qty.getText().toString().trim();
value5 = TOT5.isEmpty() ? 0.0 : Double.parseDouble(TOT5);
a= value1*value5;
String stringValue35 = Double.toString(Double.parseDouble(df2.format(a)));
holder.Total.setText("TOTAL : "+stringValue35);
}
});
holder.Qty2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
number = Integer.parseInt(holder.Qty.getText().toString());
if(number<=0){
number = 0;
}else {
number--;
holder.Qty.setText("" + number);
}
/////////////////////////////////
String Ra = saclist.PRate;
double value1 = Ra.isEmpty() ? 0.0 : Double.parseDouble(Ra);
String TOT = holder.Qty.getText().toString().trim();
double value2 = TOT.isEmpty() ? 0.0 : Double.parseDouble(TOT);
a= value1*value2;
String stringValue35 = Double.toString(Double.parseDouble(df2.format(a)));
holder.Total.setText("TOTAL : "+stringValue35);
}
});
holder.Qty1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
number=Integer.parseInt(holder.Qty.getText().toString());
数字++;
支架数量setText(“+编号);
////////////////////////////
字符串Ra=saclist.PRate;
double value1=Ra.isEmpty()?0.0:double.parseDouble(Ra);
String TOT5=holder.Qty.getText().toString().trim();
value5=TOT5.isEmpty()?0.0:Double.parseDouble(TOT5);
a=值1*5;
字符串stringValue35=Double.toString(Double.parseDoubl