private class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder>{
protected class ViewHolder extends RecyclerView.ViewHolder
{
TextView todoTextView;
TextView addedOnTextView;
TextView dueToDateTextView;
TextView dueToHourTextView;
CheckBox checkBox;
protected ViewHolder(CardView cv)
{
super(cv);
this.todoTextView = (TextView) cv.findViewById(R.id.todo_text);
this.addedOnTextView = (TextView) cv.findViewById(R.id.added_on);
this.dueToDateTextView = (TextView) cv.findViewById(R.id.due_to_date);
this.dueToHourTextView = (TextView) cv.findViewById(R.id.due_to_hour);
this.checkBox = (CheckBox)cv.findViewById(R.id.checkbox);
}
}
private final String[] COLORS = {"#64B5F6", "#F44336"};
private ArrayList<Todo> mTodos;
public Adapter()
{
this.mTodos = new ArrayList<>();
}
public void addItem(Todo message)
{
this.mTodos.add(message);
notifyItemInserted(getItemCount());
}
@Override
public int getItemCount() {
return mTodos.size();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
CardView cView = (CardView) LayoutInflater.from(parent.getContext()).inflate(R.layout.todolist_item,
parent, false);
cView.setCardBackgroundColor(Color.parseColor(COLORS[viewType]));
ViewHolder hView = new ViewHolder(cView);
return hView;
}
@Override
public int getItemViewType(int position) {
return position % 2;
}
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
final Todo currentTodo = mTodos.get(position);
holder.todoTextView.setText(currentTodo.getmTodo());
holder.dueToDateTextView.setText(currentTodo.getDueToDate());
holder.dueToHourTextView.setText(currentTodo.getDueToHour());
holder.addedOnTextView.setText(currentTodo.getAddedStr());
holder.checkBox.setChecked(currentTodo.isChecked());
final int myPos = holder.getAdapterPosition();
holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
currentTodo.setChecked();
buttonView.setEnabled(false);
mTodos.add(mTodos.remove(myPos));
notifyDataSetChanged();
}
});
}
java.lang.IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling
有人能帮我做那项任务吗?
您应该在viewHolder中移动您的逻辑:
private class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder>{
protected class ViewHolder extends RecyclerView.ViewHolder
{
TextView todoTextView;
TextView addedOnTextView;
TextView dueToDateTextView;
TextView dueToHourTextView;
CheckBox checkBox;
protected ViewHolder(CardView cv)
{
super(cv);
this.todoTextView = (TextView) cv.findViewById(R.id.todo_text);
this.addedOnTextView = (TextView) cv.findViewById(R.id.added_on);
this.dueToDateTextView = (TextView) cv.findViewById(R.id.due_to_date);
this.dueToHourTextView = (TextView) cv.findViewById(R.id.due_to_hour);
this.checkBox = (CheckBox)cv.findViewById(R.id.checkbox);
this.checkBox.setOnCheckChangeListener(this);
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Todo currentTodo = mTodos.get(getAdapterPosition());
if(!onBind) {
currentTodo.setChecked();
buttonView.setEnabled(false);
mTodos.add(mTodos.remove(getAdapterPosition()));
notifyDataSetChanged();
}
}
}
private final String[] COLORS = {"#64B5F6", "#F44336"};
private ArrayList<Todo> mTodos;
public Adapter()
{
this.mTodos = new ArrayList<>();
}
public void addItem(Todo message)
{
this.mTodos.add(message);
notifyItemInserted(getItemCount());
}
@Override
public int getItemCount() {
return mTodos.size();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
CardView cView = (CardView) LayoutInflater.from(parent.getContext()).inflate(R.layout.todolist_item,
parent, false);
cView.setCardBackgroundColor(Color.parseColor(COLORS[viewType]));
ViewHolder hView = new ViewHolder(cView);
return hView;
}
@Override
public int getItemViewType(int position) {
return position % 2;
}
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
final Todo currentTodo = mTodos.get(position);
holder.todoTextView.setText(currentTodo.getmTodo());
holder.dueToDateTextView.setText(currentTodo.getDueToDate());
holder.dueToHourTextView.setText(currentTodo.getDueToHour());
holder.addedOnTextView.setText(currentTodo.getAddedStr());
holder.checkBox.setChecked(currentTodo.isChecked());
}
我现在不能尝试,让我知道是否在帮你。
对不起我的英语。
问题内容: 我是Linux新手。我正在尝试编写一个shell脚本,该脚本将 根据文件的扩展 名将 文件移动到某些文件夹 ,例如在我的downloads文件夹中,我具有混合文件类型的所有文件。我写了以下脚本 将文件添加到此文件夹后,如何使其自动运行?现在,我必须每次手动运行脚本。 还有一个问题,有什么办法可以合并这两个语句 成为一个陈述?我尝试使用(C编程“或”运算符)和逗号,但它们似乎不起作用。
当我滚动RecycerView时,它正在复制项,并且我已经调用。 所以,可能我在错误的地方调用了数据集更新,但我找不到它是如何工作的。 下面是一些代码:
正如您在这里看到的:JSFiddle
我有一个,它具有和滚动。因为,这是一个带有的网格。为什么?因为它比中的简单要优化得多。 这一行需要与列表项滚动。 有人知道怎么做吗?我可以在项目上方添加一个新层吗?
我有一个复选框,其中有一对项目,当我单击该复选框时,该项目将添加到名为currentDevice的状态,但当我取消选中该项目时,它将保留“添加项目”,而不是删除它。 当我取消选中该框时,如何从状态中删除项。Im使用“反应本机元素”复选框。谢谢你 代码:
我目前正在工作Java/Selenium webdriver自动化。然而,我被困在这个特定的部分,我无法使webdriver点击基于值的复选框。 当我不使用xpath的Axes部分时,它可以工作,但是它只能选中第一个复选框 下面是html的一个片段