Reputation:
I have a RecyclerView
and I update the Data in the adapter, my problem is that After Change I can not refresh RecyclerView
Data.
i used notifyDataSetChanged();
but is doesn't work
UpdateStudent edits the student name, the problem is that after the change, RecyclerView
needs to refresh list
public class RecyclerViewAdapter_StudentList extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
List<StudentTable> tableData = new ArrayList<>();
Context context;
private LayoutInflater mInflater;
public RecyclerViewAdapter_StudentList(Context context, List<StudentTable> tableData) {
this.mInflater = LayoutInflater.from(context);
this.context = context;
this.tableData = tableData;
}
public class itemHolder extends RecyclerView.ViewHolder {
TextView studentName;
return new itemHolder(view);
}
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
itemHolder itemHolder = (itemHolder) holder;
String studentName = tableData.get(position).getStudentName();
itemHolder.studentName.setText(studentName);
itemHolder.editStudent_Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
String studentName_new = studentName_EditText.getText().toString();
database.UpdateStudent(classId , studentName_new);
notifyDataSetChanged();// does not work
}
}
}
Upvotes: 1
Views: 14191
Reputation: 1898
itemHolder.editStudent_Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
String studentName_new = studentName_EditText.getText().toString();
database.UpdateStudent(classId , studentName_new);
StudentTable student = tableData.get(position);
student.setName(studentName_new);
notifyItemChanged(position);
}
}
Upvotes: 1
Reputation: 131
Try this:
itemHolder.editStudent_Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
String studentName_new = studentName_EditText.getText().toString();
database.UpdateStudent(classId , studentName_new);
StudentTable student = tableData.get(position);
student.setName(studentName_new);
tableData.set(position, student);
notifyItemChanged(position);
}
}
Upvotes: 1
Reputation: 1023
Here you are notifying only adapter without changing data list so you need to do is
After updating retrieve data from table and store it in your current list tableData
and then you have to call notifyDataSetChanged();
Upvotes: 0