我正在使用RecyclerView来显示一个项目列表,我需要按位置更新单个项目的状态。我正在更新列表中的项目,然后调用notifyItemChanged(int位置),如下所示:
myList.set(position, newModifiedItem);
notifyItemChanged(position);
项目更新成功,但也随机更新了一些其他项目,每次我滚动上下通过我的项目列表,这种更新(不同的图标状态)也在其他项目上。
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<MyObj> myList;
public MyAdapter(List<MyObj> list) {
this.myList = list;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_item, parent, false);
return new ViewHolder(view);
}
public void onBindViewHolder(final ViewHolder holder, final int position) {
MyObj myObj = myList.get(position);
boolean isSpecial = myObj.getMySpecialStatus();
holder.myItemTitle.setText(myObj.getTitle());
//decide if item has different icon state
if (isSpecial) {
holder.myItemIcon.setImageResource(R.drawable.ic_special);
}
}
@Override
public int getItemCount() {
return myList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView myItemTitle;
public ImageView myItemIcon;
public LinearLayout itemClickable;
//some other views
public ViewHolder(View itemView) {
super(itemView);
myItemTitle = (TextView) itemView.findViewById(R.id.item_title);
myItemIcon = (ImageView) itemView.findViewById(R.id.item_img);
itemClickable = (LinearLayout) itemView.findViewById(R.id.item_clickable_zone);
itemClickable.setOnClickListener(this);
//some other views
}
@Override
public void onClick(View v) {
final int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
switch (v.getId()) {
case R.id.item_clickable_zone: {
//some logic to change status - here just an idea
MyObj newModifiedItem = myList.get(position);
newModifiedItem.setMySpecialStatus(true);
myList.set(position, newModifiedItem);
notifyItemChanged(position);
break;
}
//some other views on click
}
}
}
}
}
问题出在OnBindViewHolder()
中,您没有为if
语句使用else
大小写。应该是这样的:
public void onBindViewHolder(final ViewHolder holder, final int position) {
MyObj myObj = myList.get(position);
boolean isSpecial = myObj.getMySpecialStatus();
holder.myItemTitle.setText(myObj.getTitle());
//decide if item has different icon state
if (isSpecial) {
holder.myItemIcon.setImageResource(R.drawable.ic_special);
} else {
//here is the trick - set normal state back
holder.myItemIcon.setImageResource(R.drawable.ic_standard);
}
}
我的RecyclView defaultItemAnimator有问题。当我使用elle fyItemRemve()删除我的一个项目时,我还会在另一个特定索引上调用elle fyItemChanged()来更改其中的文本。在删除动画期间,我在其上调用的项目通知fyItemChanged()会更改其文本,但会做一些看起来很傻的动画,像拇指疼痛一样突出。(它会立即移动到新位置,而其余的则会顺利移动到新
问题内容: 我知道您可以一次插入多行,是否可以在MySQL中一次更新多行(如在一个查询中)? 编辑:例如,我有以下内容 我想将以下所有更新合并到一个查询中 问题答案: 是的,这是可能的-您可以在插入的键更新中使用INSERT…。 使用您的示例:
我在片段的底部有一个水平图像滑块。片段的顶部显示了一些细节。一旦用户点击底部的图像,想法是从图像滑块中删除该图像,并在片段中显示其信息。现在,信息显示出来,但图像不会从中删除。下面是我在最外层布局的中编码的内容。我试过了所有我能找到的相关答案,但都没有奏效。它们都在代码里。请让我知道我做错了什么或者错过了什么。 适配器的完整代码 }
我正在使用DynamoDB,我需要更新多条记录上的特定属性。用伪语言编写我的需求时,我希望执行这样一个更新:“update table persons set relationshipStatus='where personKey in(key1,key2,key3,...)”(假设personKey是DynamoDB表中的键)。 换句话说,我想用一个In子句进行更新,或者我想可以称之为批处理更新
首先,我在这方面工作了一整天,但什么也做不到。我有一个,其适配器使用的。我尝试使用回调类实现: 下面是TouchHelper的初始化 我的适配器实现接口 链接 适配器类查看器类
使用PyCharm,可以在同一个窗口/环境中拥有多个项目。每个项目在Project中都有自己的解释器配置 有没有一种简单的方法可以一次将所有项目切换到同一个解释器?状态栏中的“快速切换器”仅更新被视为“当前项目”的内容(包含当前或上次打开的文件的项目)。切换到单个项目和多个内容根不是一个选项,因为它会导致多个项目解决的各种其他问题。