Android 领域适配器2.0
这可被视为来自以下方面的后续问题: 现在我正在使用realmadapters(),对对象的实时更改得到了正确反映 现在,我正在按Android 领域适配器2.0,android,realm,Android,Realm,这可被视为来自以下方面的后续问题: 现在我正在使用realmadapters(),对对象的实时更改得到了正确反映 现在,我正在按 private void sortByRuns() { searchRecordList.clear(); recordRealmResults = RealmManager.recordsDao().loadMostRuns(); adapter.updateData(recordRealmResults); } 现在updateDa
private void sortByRuns() {
searchRecordList.clear();
recordRealmResults = RealmManager.recordsDao().loadMostRuns();
adapter.updateData(recordRealmResults);
}
现在updateData方法依次调用adapter.notifiedDataSetChanged();
但是我的适配器仍然包含旧数据
这是我的适配器
public class RecordsAdapter extends RealmRecyclerViewAdapter<Record, RecordsAdapter.ViewHolder> {
private Context context;
private OrderedRealmCollection<Record> orderedRealmCollection;
public RecordsAdapter(OrderedRealmCollection<Record> orderedRealmCollection, Context context) {
super(orderedRealmCollection, true);
this.orderedRealmCollection = orderedRealmCollection;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_records, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.batsmanName.setText(orderedRealmCollection.get(position).getName());
Glide.with(context).load(orderedRealmCollection.get(position).getImage()).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(holder.profilePicture);
holder.totalRuns.setText("Runs " + orderedRealmCollection.get(position).getTotalScore());
holder.totalMatches.setText("Matches " + orderedRealmCollection.get(position).getMatchesPlayed());
if (orderedRealmCollection.get(position).isFavourite())
holder.favCheck.setChecked(true);
else
holder.favCheck.setChecked(false);
holder.favCheck.setOnClickListener(v -> {
CheckBox checkBox = (CheckBox) v;
if (checkBox.isChecked()) {
RealmManager.recordsDao().saveToFavorites(orderedRealmCollection.get(position));
} else {
RealmManager.recordsDao().removeFromFavorites(orderedRealmCollection.get(position));
}
});
}
public class ViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.profile_picture)
ImageView profilePicture;
@BindView(R.id.batsman_name)
TextView batsmanName;
@BindView(R.id.check_fav)
CheckBox favCheck;
@BindView(R.id.runs)
TextView totalRuns;
@BindView(R.id.matches)
TextView totalMatches;
@BindView(R.id.card_view)
CardView cardView;
@OnClick(R.id.card_view)
public void navigate() {
EventBus.getDefault().post(new MyEvents.RecordEvent(orderedRealmCollection.get(getAdapterPosition()), profilePicture));
}
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
公共类RecordsAdapter扩展了RealmRecyclServiceAdapter{
私人语境;
私有OrderedRealmCollection OrderedRealmCollection;
公共记录适配器(OrderedRealmCollection OrderedRealmCollection,上下文){
super(orderedRealmCollection,true);
this.orderedRealmCollection=orderedRealmCollection;
this.context=上下文;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.item_记录,parent,false);
返回新的视图持有者(v);
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
holder.batsmanName.setText(orderedRealmCollection.get(position.getName());
Glide.with(context).load(orderedRealmCollection.get(position.getImage()).diskCacheStrategy(diskCacheStrategy.SOURCE).into(holder.profilePicture);
holder.totalRuns.setText(“Runs”+orderedRealmCollection.get(position.getTotalScore());
holder.totalMatches.setText(“Matches”+orderedRealmCollection.get(position.getMatchesPlayed());
if(orderedRealmCollection.get(position.isFavorite())
holder.favCheck.setChecked(真);
其他的
holder.favCheck.setChecked(假);
holder.favCheck.setOnClickListener(v->{
复选框=(复选框)v;
如果(checkBox.isChecked()){
realmanager.recordsDao().saveToFavorites(orderedRealmCollection.get(position));
}否则{
removeFromFavorites(orderedRealmCollection.get(position));
}
});
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
@BindView(R.id.profile_图片)
图像视图剖面图;
@BindView(R.id.batsman_名称)
TextView-batsmanName;
@BindView(R.id.check\U fav)
复选框favCheck;
@BindView(R.id.runs)
TextView totalRuns;
@BindView(R.id.matches)
文本视图;
@BindView(R.id.card_视图)
卡德维尤;
@OnClick(R.id.card\u视图)
公共空间导航(){
EventBus.getDefault().post(新的MyEvents.RecordEvent(orderedRealmCollection.get(getAdapterPosition()),profilePicture));
}
公共视图持有者(视图项视图){
超级(项目视图);
ButterKnife.bind(这个,itemView);
}
}
当我想要推送更新的列表时,如何反映适配器中的更改?在设置
this.orderedRealmCollection=orderedRealmCollection;
所以只需使用getData()
//private OrderedRealmCollection<Record> orderedRealmCollection;
public RecordsAdapter(OrderedRealmCollection<Record> orderedRealmCollection, Context context) {
super(orderedRealmCollection, true);
//this.orderedRealmCollection = orderedRealmCollection;
this.context = context;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Record record = getData().get(position);
holder.batsmanName.setText(record.getName());
Glide.with(context).load(record.getImage()).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(holder.profilePicture);
holder.totalRuns.setText("Runs " + record.getTotalScore());
holder.totalMatches.setText("Matches " + record.getMatchesPlayed());
if (record.isFavourite())
holder.favCheck.setChecked(true);
else
holder.favCheck.setChecked(false);
holder.favCheck.setOnClickListener(v -> {
CheckBox checkBox = (CheckBox) v;
if (checkBox.isChecked()) {
RealmManager.recordsDao().saveToFavorites(record);
} else {
RealmManager.recordsDao().removeFromFavorites(record);
}
});
}
//私有OrderedRealmCollection OrderedRealmCollection;
公共记录适配器(OrderedRealmCollection OrderedRealmCollection,上下文){
super(orderedRealmCollection,true);
//this.orderedRealmCollection=orderedRealmCollection;
this.context=上下文;
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
Record Record=getData().get(位置);
holder.batsmanName.setText(record.getName());
Glide.with(context).load(record.getImage()).diskCacheStrategy(diskCacheStrategy.SOURCE).into(holder.profilePicture);
holder.totalRuns.setText(“Runs”+record.getTotalScore());
holder.totalMatches.setText(“Matches”+record.getMatchesPlayed());
if(record.isfavorite())
holder.favCheck.setChecked(真);
其他的
holder.favCheck.setChecked(假);
holder.favCheck.setOnClickListener(v->{
复选框=(复选框)v;
如果(checkBox.isChecked()){
RealmManager.recordsDao().saveToFavorites(记录);
}否则{
removeFromFavorites(记录);
}
});
}
在设置this.orderedRealmCollection=orderedRealmCollection;
所以只需使用getData()
//private OrderedRealmCollection<Record> orderedRealmCollection;
public RecordsAdapter(OrderedRealmCollection<Record> orderedRealmCollection, Context context) {
super(orderedRealmCollection, true);
//this.orderedRealmCollection = orderedRealmCollection;
this.context = context;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Record record = getData().get(position);
holder.batsmanName.setText(record.getName());
Glide.with(context).load(record.getImage()).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(holder.profilePicture);
holder.totalRuns.setText("Runs " + record.getTotalScore());
holder.totalMatches.setText("Matches " + record.getMatchesPlayed());
if (record.isFavourite())
holder.favCheck.setChecked(true);
else
holder.favCheck.setChecked(false);
holder.favCheck.setOnClickListener(v -> {
CheckBox checkBox = (CheckBox) v;
if (checkBox.isChecked()) {
RealmManager.recordsDao().saveToFavorites(record);
} else {
RealmManager.recordsDao().removeFromFavorites(record);
}
});
}
//私有OrderedRealmCollection OrderedRealmCollection;
公共记录适配器(OrderedRealmCollection OrderedRealmCollection,上下文){
super(orderedRealmCollection,true);
//this.orderedRealmCollection=orderedRealmCollection;
this.context=上下文;
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
Record Record=getData().get(位置);
holder.batsmanName.setText(record.getName());
Glide.with(context).load(record.getImage()).diskCacheStrategy(diskCacheStrategy.SOURCE).into(holder.profilePicture);
holder.totalRuns.setText(“Runs”+record.getTotalScore());
holder.totalMatches.setText(“Matches”+record.getMatchesPlayed());
if(record.isfavorite())
holder.favCheck.setChecked(真);
其他的
holder.favCheck.setChecked(假);
holder.favCheck.setOnClickListener(v->{
复选框=(复选框)v;
如果(checkBox.isChecked()){
RealmManager.recordsDao().saveToFavorites(记录);
}否则{
removeFromFavorites(记录);
}
});
}
甚至您也可以使用getItem(position:Int)获取您想要绑定到ViewHolder的数据
就像
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Record record = getItem(position)
holder.batsmanName.setText(record.getName());
Glide.with(context).load(record.getImage())
.diskCacheStrategy(DiskCacheStrategy.SOURCE).into(holder.profilePicture);
holder.totalRuns.setText("Runs " + record.getTotalScore());
holder.totalMatches.setText("Matches " + record.getMatchesPlayed());
if (record.isFavourite())
holder.favCheck.setChecked(true);
else
holder.favCheck.setChecked(false);
holder.favCheck.setOnClickListener(v -> {
CheckBox checkBox = (CheckBox) v;
if (checkBox.isChecked()) {
RealmManager.recordsDao().saveToFavorites(record);
} else {
RealmManager.recordsDao().removeFromFavorites(record);
}
});
}
甚至您也可以使用getItem(position:Int)来获取要绑定到ViewHolder的数据 就像
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Record record = getItem(position)
holder.batsmanName.setText(record.getName());
Glide.with(context).load(record.getImage())
.diskCacheStrategy(DiskCacheStrategy.SOURCE).into(holder.profilePicture);
holder.totalRuns.setText("Runs " + record.getTotalScore());
holder.totalMatches.setText("Matches " + record.getMatchesPlayed());
if (record.isFavourite())
holder.favCheck.setChecked(true);
else
holder.favCheck.setChecked(false);
holder.favCheck.setOnClickListener(v -> {
CheckBox checkBox = (CheckBox) v;
if (checkBox.isChecked()) {
RealmManager.recordsDao().saveToFavorites(record);
} else {
RealmManager.recordsDao().removeFromFavorites(record);
}
});
}
因为您应该放弃变量
orderedRealmCollection
,而只需使用getData()
,因为您应该放弃变量orderedRealmCollection