我需要将 RecyclerView 中选中的复选框从一个活动发送到另一个活动。只有选中的复选框项目行应该转到下一个活动。我已经尝试了很多,但找不到任何解决这个问题的方法。所以请帮我解决这个问题并找到合适的解决方案。谢谢!
import android.content.Context;
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.CompoundButton;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.TextView;
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.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;
Double a;
int b;
int c;
Double d;
LayoutInflater inflater;
Double e;
ViewGroup viewGroup;
Double value5;
SAC myActivity;
private SACAdapterListener listener;
private DecimalFormat df2 = new DecimalFormat("#############.##");
private DecimalFormat df = new DecimalFormat("0.#");
private int number = 0;
private int number1 = 0;
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView ProName, Rate, Qty, Total;
public ImageView thumbnail;
public Button Qty1, Qty2;
CheckBox check;
TextView cartICON;
// 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);
check = view.findViewById(R.id.check);
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 = 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);
if (number <= 0) {
holder.check.setChecked(false);
} else {
holder.check.setChecked(true);
}
// number1++;
// SAC.update_counter(""+number1);
}
});
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);
if (number <= 0) {
holder.check.setChecked(false);
} else {
holder.check.setChecked(true);
}
}
});
holder.check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if(holder.check.isChecked()){
number1++;
SAC.update_counter(""+number1);
}
if (!holder.check.isChecked()){
number1--;
SAC.update_counter(""+number1);
}
}
});
}
@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);
}
}