Dies ist meine Adapterklasse Ich möchte auf eine Textansicht klicken, so dass ein Dialogfeld erscheint, wenn ich einen Wert eingabe, der Wert wird in der Textansicht gespeichert. Das ist es, was ich brauche, aber die Werte werden in zufälligen Positionen eingegeben.Daten ändern auf RecyclerView ItemClick
public class myAdapter extends RecyclerView.Adapter<myAdapter.ViewHolder> {
public List<Student> list;
static public Context context;
public myAdapter(List<Student> stdList) {
this.list = stdList;
}
@Override
public myAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
context = parent.getContext();
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_item, null);
ViewHolder viewHolder = new ViewHolder(itemView);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.name.setText(list.get(position).getSname());
}
class ViewHolder extends RecyclerView.ViewHolder {
protected TextView name;
protected TextView amt;
public ViewHolder(View itemView) {
super(itemView);
this.name = (TextView) itemView.findViewById(R.id.Name);
this.amt = (TextView) itemView.findViewById(R.id.et_amount);
this.amt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final int pos = getAdapterPosition();
final AlertDialog.Builder inputAlert = new AlertDialog.Builder(context);
inputAlert.setTitle("Pay for picnic");
inputAlert.setMessage("We need the amount to proceed");
final EditText userInput = new EditText(context);
userInput.setInputType(InputType.TYPE_CLASS_NUMBER);
inputAlert.setView(userInput);
inputAlert.setPositiveButton("Submit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String userInputValue = userInput.getText().toString();
amt.setText(calc(userInputValue));
notifyItemChanged(pos);
}
});
inputAlert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog alertDialog = inputAlert.create();
alertDialog.show();
}
});
}
}
public String calc(String val) {
int i = Integer.parseInt(val);
if (i > 850) {
Toast.makeText(context, "Incorrect amount", Toast.LENGTH_SHORT).show();
} else {
i = 850 - i;
Toast.makeText(context, "Successful", Toast.LENGTH_SHORT).show();
}
String value = String.valueOf(i);
return value;
}
@Override
public int getItemCount() {
return list.size();
}
}
Hat ändert es 'this.amt.setText (ber (userInputValue));' arbeiten? Wenn nicht, würde ich empfehlen, den Klick-Listener auf Ihren 'onBindViewHolder' zu verschieben. –