Recycler View 数据未更新?

Recycler View Data is not getting Updating?

我在片段中有一个回收器视图,它有按钮列表。当用户按下按钮时,它会打开另一个 activity 来编辑名称和其他数据。当它返回到片段时,它是无法更新文本视图的名称,而且当我删除项目时,每当我在列表中保存新项目时,它都会显示旧名称。请帮我解决这个问题。

public void updateScreen(String name, int pos) {
        modelList.add(new DataModel(name, R.drawable.custom_mode));
        mAdapter.notifyItemInserted(pos);
        mAdapter.notifyDataSetChanged();
    }

    public void deleteDataUi(int pos) {
        Log.e("DelteUIpos:", String.valueOf(pos));
        modelList.remove(pos);
        mrecycler.removeViewAt(pos);
        mAdapter.notifyItemRemoved(pos);
        mAdapter.notifyItemRangeChanged(pos, dataList.size());
        mAdapter.notifyDataSetChanged();

    }

    public void updateNameUI(int pos, String nm) {
        dataList.get(pos).setImageName(nm);
        mAdapter.notifyItemChanged(pos);
        mAdapter.notifyDataSetChanged();
    }

第 2 Activity

        case R.id.saveMode:
            MainFragm fragMain = new MainFragm ();
                    fragMain .updateScreen(edname, position);
                    NavUtils.navigateUpFromSameTask(secondActivity.this);
                    finish();
               break;
        case R.id.EditMode:
            MainFragm fragMain = new MainFragm ();
           fragMain.updateNameUI(position,edname.getText().toString());
                NavUtils.navigateUpFromSameTask(secondActivity.this);
                finish();
            break;
        case R.id.deleteMode:
            MainFragm fragMain = new MainFragm ();
            fragMain.deleteDataUi(Dataposition);
            NavUtils.navigateUpFromSameTask(secondActivity.this);
            finish();
            break;

适配器

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter .Holder> {
    private ArrayList<DataModel> dataModels = new ArrayList<>();
    private Context mContext;

    CustomAdapter (Context context, List<DataModel> dataModelsList) {
        mContext = context;
        dataModels = (ArrayList<DataModel>) dataModelsList;
    }

    @Override
    public CustomAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //Inflate the layout, initialize the View Holder
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.custom_row, parent, false);
        return new CustomAdapter.ViewHolder(v);

    }

    @Override
    public void onBindViewHolder(CustomAdapter.ViewHolder holder, int position) {

        //Use the provided View Holder on the onCreateViewHolder method to populate the current row on the RecyclerView
        holder.imageView.setImageResource(dataModels .get(position).getImg());
        holder.textView.setText(dataModels .get(position).getTextName());
    }

    @Override
    public int getItemCount() {
        //returns the number of elements the RecyclerView will display
        return dataModels.size();
    }

    @Override
    public void onAttachedToRecyclerView(RecyclerView recyclerView) {
        super.onAttachedToRecyclerView(recyclerView);
    }


    class ViewHolder extends RecyclerView.ViewHolder {

        ImageButton imageView;
        TextView textView;

        ViewHolder (View itemView) {
            super(itemView);
            imageView = itemView.findViewById(R.id.img_view);
            textView = itemView.findViewById(R.id.edit_tv);
            int width = 250;
            int height = 250;
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width, height);
            imageView.setLayoutParams(params);
        }
    }
}

尝试为 CustomAdapter 中的 dataModelsList 创建一个 public getter,其中 returns 参考数据集。

然后使用 modelList.remove(pos);

使用这个:

mAdapter.createdGetterMethod().remove(pos)

改为使用 dataList.get(pos).setImageName(nm); 使用这个:

mAdapter.createdGetterMethod().get(pos).setImageName(nm);