【发布时间】:2016-11-15 06:16:19
【问题描述】:
我的 recyclerview 显示 2 个文本视图和 1 个图像视图。在适配器的 onbindviewholder 内,我可以很好地设置 2 个 textview 的文本,但是当我更改颜色时,它们会变得不可见。
另外,当我删除 recyclerview 项目,然后“撤消”它时,它会显示颜色变化。我做错了什么?
我怀疑它与其中一个 notify...() 方法有关,但是当我尝试将其中一个放入 onbindviewholder 时,应用程序将在启动时崩溃。
public class MemoListAdapter extends RecyclerView.Adapter<MemoListAdapter.ViewHolder> {
private CardView cv;
private List<Memo> mMemos;
private Context mContext;
public List<Memo> memosToRemove;
//pass in the list of notes to display
public MemoListAdapter(List<Memo> memos, Context context) {
mMemos = memos;
mContext = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View rowView = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_memo_list, parent, false);
ViewHolder viewHolder = new ViewHolder(rowView, mContext, mMemos);
return viewHolder;
}
//@param holder & position - identifies the Note we are working with
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.memoTitle.setText(mMemos.get(position).getTitle());
holder.memoContent.setText(mMemos.get(position).getContent());
holder.memoIcon.setColorFilter(mMemos.get(position).getNotificationColor());
holder.memoTitle.setTextColor(mMemos.get(position).getNotificationColor());
}
这是正确显示颜色更改的撤消方法
public void onItemRemove(final RecyclerView.ViewHolder viewHolder, final RecyclerView mRecyclerView) {
final int adapterPosition = viewHolder.getAdapterPosition();
final int memoID = mMemos.get(adapterPosition).getId();
final DatabaseHandler db = new DatabaseHandler(mContext);
final Memo memo = db.getMemo(memoID);
mMemos.remove(adapterPosition);
db.deleteMemo(memo);
notifyItemRemoved(adapterPosition);
Snackbar snackbar = Snackbar
.make(mRecyclerView, mContext.getString(R.string.note_deleted), Snackbar.LENGTH_LONG)
.setAction(R.string.undo_string, new View.OnClickListener() {
@Override
public void onClick(View view) {
mMemos.add(adapterPosition, memo);
notifyItemInserted(adapterPosition);
mRecyclerView.scrollToPosition(adapterPosition);
db.addMemo(memo);
}
});
然后我将笔记滑开,然后快速按撤消
【问题讨论】:
-
您是否以编程方式更改颜色
-
@snlvtr 告诉我“mMemos.get(position).getNotificationColor()”的值
-
@snlvtr 为测试用例尝试 holder.memoTitle.setTextColor(Color.RED)?并检查它是否工作
-
@AnantShah 我得到的值是 6,这很奇怪。我在另一个类中使用了 getNotificationColor(),它工作正常。
-
@Raghavendra 刚刚尝试过,它有效。
标签: android android-recyclerview adapter