活动恢复时更新 RecyclerView?

you*_*sef 5 android material-design android-recyclerview

我有一个QuestionActivity我在RecyclerView.

我在工具栏中有两个动作

  1. 转到下载文件活动。

  2. 去最喜欢的活动。

每一件事情是确定的,但,当我打的行动,重新回到一个QuestionActivityRecyclerView无法得到更新。

所以我需要覆盖OnResume方法。我的问题是,如何RecyclerViewonResumeMethod 中更新。

AdapterRecyclerQuestion 代码 :

public class AdapterRecyclerQuestion extends RecyclerView.Adapter<AdapterRecyclerQuestion.ViewHolder> {

    private Context context;
    private ArrayList<ModelQuestion> questionha;
    private int lastd;


    ////////////////////////////////////////////////////////////
    //================== Constructor   =========================
    ////////////////////////////////////////////////////////////

    public AdapterRecyclerQuestion(Context context, ArrayList<ModelQuestion> questionha) {
        this.context = context;
        this.questionha = questionha;
    }

    ////////////////////////////////////////////////////////////
    //================== view holder  =========================
    ////////////////////////////////////////////////////////////

    public class ViewHolder extends RecyclerView.ViewHolder {
        private TextView txtTitle;
        private TextView txtDesc;
        private TextView txtCntDown;
        private Button btnDownload;
        private ImageView imgAddFav;
        private ProgressBar prgDownload;

        ////////////////////////////////////////////////////////////
        //================== View holder constructor  ==============
        ////////////////////////////////////////////////////////////

        public ViewHolder(View itemView) {
            super(itemView);
            txtTitle = (TextView) itemView.findViewById(R.id.txt_title_question);
            txtDesc = (TextView) itemView.findViewById(R.id.txt_desc_question);
            txtCntDown = (TextView) itemView.findViewById(R.id.txt_cnt_down_question_dy);
            btnDownload = (Button) itemView.findViewById(R.id.btn_down_question);
            imgAddFav = (ImageView) itemView.findViewById(R.id.img_add_to_fav);
            prgDownload = (ProgressBar) itemView.findViewById(R.id.prgDownload);
        }
    }
    ////////////////////////////////////////////////////////////
    //================== on create view holder  ================
    ////////////////////////////////////////////////////////////

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.question_row, parent, false);
        return new ViewHolder(view);
    }

    ////////////////////////////////////////////////////////////
    //================== on bind view holder  =================
    ////////////////////////////////////////////////////////////

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


        QuestionDatabaseAdapter questionDatabaseAdapter = new QuestionDatabaseAdapter(holder.itemView.getContext());

        holder.txtTitle.setText(questionha.get(position).getQuestionTitle());
        holder.txtDesc.setText(questionha.get(position).getQuestionDesc());
        holder.txtCntDown.setText(questionha.get(position).getQuestionDownCnt());

        ////////////////////////////////////////////////////////////
        //================== Favorite checking  ====================
        ////////////////////////////////////////////////////////////


        boolean isFavorite = questionDatabaseAdapter.isQuestionFavorite(questionha.get(position).getQuestionId());

        if (isFavorite)

        {
            holder.imgAddFav.setImageResource(R.drawable.ic_favorite_red_700_24dp);
        } else

        {
            holder.imgAddFav.setImageResource(R.drawable.ic_favorite_border_red_a700_24dp);
        }


        ////////////////////////////////////////////////////////////
        //================== img add fav listener  =================
        ////////////////////////////////////////////////////////////

        holder.imgAddFav.setOnClickListener(new View.OnClickListener() {

                                                @Override
                                                public void onClick(View v) {

                                                    QuestionDatabaseAdapter databaseAdapter = new QuestionDatabaseAdapter(v.getContext());
                                                    boolean isFav = databaseAdapter.isQuestionFavorite(questionha.get(position).getQuestionId());

                                                    if (!isFav) {
                                                        Toast.makeText(v.getContext(), "?? ???? ????? ???? ?? ????? ??", Toast.LENGTH_SHORT).show();
                                                        holder.imgAddFav.setImageResource(R.drawable.ic_favorite_red_700_24dp);
                                                        ModelQuestion question = new ModelQuestion();

                                                        question.setQuestionId(questionha.get(position).getQuestionId());
                                                        question.setQuestionTitle(questionha.get(position).getQuestionTitle());
                                                        question.setQuestionDesc(questionha.get(position).getQuestionDesc());
                                                        question.setQuestionDownLink(questionha.get(position).getQuestionDownLink());
                                                        question.setQuestionDownFileName(questionha.get(position).getQuestionDownFileName());

                                                        databaseAdapter.saveQuestion(question);
                                                    } else {
                                                        Toast.makeText(v.getContext(), "?? ???? ????? ???? ?? ??? ??", Toast.LENGTH_SHORT).show();
                                                        holder.imgAddFav.setImageResource(R.drawable.ic_favorite_border_red_a700_24dp);
                                                        databaseAdapter.deleteQuestion(questionha.get(position).getQuestionId());
                                                    }
                                                }
                                            }
        );
    }

    ////////////////////////////////////////////////////////////
    //================== get item count method  ================
    ////////////////////////////////////////////////////////////
    @Override
    public int getItemCount() {
        if (questionha.size() == 0) {
            return 0;
        } else {
            return questionha.size();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢。

you*_*sef 1

感谢 Anoop M,我只是为我编写了解决方案。我在 QuestionActivity 中编写此代码。

    ////////////////////////////////////////////////////////////
    //================== on Resume   ===========
    ////////////////////////////////////////////////////////////

    @Override
    protected void onResume() {
        super.onResume();
        adapterRecyclerQuestion.notifyDataSetChanged();
        recyclerQuestion.setAdapter(adapterRecyclerQuestion);
    }
Run Code Online (Sandbox Code Playgroud)

  • 这不是正确的做法,琪亚娜。除非您确实需要,否则不要强迫适配器更新其数据。行动前检查。仅当项目发生更改时才更新。您编写的代码将更新您在每份简历中的观点。比如说,如果您的应用程序从同一屏幕进入后台,那么当它进入前台时,它会更新您的视图。这完全是多余的。 (3认同)