Это мой класс адаптера. Я хочу щелкнуть текстовое окно таким образом, чтобы при вводе значения, которое хранится в текстовом виде, появляется диалоговое окно. Это то, что мне нужно, но значения вводятся в случайные позиции.Изменить данные на 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();
}
}
ли изменение его в 'this.amt.setText (известково (userInputValue));' работать? Если нет, я бы рекомендовал переместить ваш прослушиватель кликов на ваш 'onBindViewHolder' –