user9512415
user9512415

Reputation:

How Can Refresh RecyclerView Items After Update

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

ReyclerView Adapter :

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);
    }
}

onBindViewHolder

@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

Answers (3)

EL TEGANI MOHAMED
EL TEGANI MOHAMED

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

Sotin Semyon
Sotin Semyon

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

Amrish Kakadiya
Amrish Kakadiya

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

Related Questions