【发布时间】:2016-11-06 01:50:35
【问题描述】:
我有一个QuestionActivity,如果我在RecyclerView 中显示问题列表。
我在工具栏中有两个动作
转到下载的文件活动。
转到最喜欢的活动。
一切正常,但是当我点击其中一个操作并返回 QuestionActivity 时,RecyclerView 无法更新。
所以我需要重写OnResume 方法。我的问题是,如何在onResume 方法中更新RecyclerView。
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();
}
}
}
谢谢。
【问题讨论】:
-
欢迎来到#SO。嗯,你说的无法重启是什么意思?
-
@kiana 检查您的数组列表更改或用新数据填充它并执行 adapter.notifyDataSetChanged();
-
您是否尝试在 onResume() 方法上设置(或重置)适配器?
-
当您推送这些操作之一并导航到新 Activity 时,您是否终止 QuestionActivity ?
-
感谢 Anoop,我需要检查收藏图标的状态和其他一些作品。
标签: android android-recyclerview material-design