以下是代码,
public SearchViewHolder(View itemView) {
super(itemView);
name = (TextView) itemView.findViewById(R.id.Name);
phone = (TextView) itemView.findViewById(R.id.Phone);
status = (TextView) itemView.findViewById(R.id.Status);
checkBox = (CheckBox) itemView.findViewById(R.id.checkBox);
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if (isChecked) {
//update status value yes
} else {
//update status value no
}
}
});
}
public SearchAdapter(Context context, ArrayList<String> NameList, ArrayList<String> PhoneList, ArrayList<String>StatusList ) {
this.context = context;
this.NameList = NameList;
this.PhoneList = PhoneList;
this.StatusList = StatusList;
}
@Override
public SearchAdapter.SearchViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.list_layout, parent, false);
return new SearchAdapter.SearchViewHolder(view);
}
@Override
public void onBindViewHolder(SearchViewHolder holder, int position) {
holder.Name.setText(studentNameList.get(position));
holder.Phone.setText(studentPhoneList.get(position));
holder.Status.setText(studentConList.get(position));
}
我将firebase数据检索到recyclerview,其中包含每个项目的名称,电话和状态以及复选框。如何在复选框检查时更新状态值,它会将firebase中的值更新为是,否则取消选中show value no?我必须使用NotifyDataSetChange方法吗?
我的数据库看起来像这样
"users": {
"1": {
"name": "abc"
"phone": "0123"
"status": "No"
},
"2": {
"name": "def"
"phone": "0456"
"status": "No"
},
},
答案 0 :(得分:0)
您可以在bindview持有人内部使用更新代码。
@Override
public void onBindViewHolder(Firebase_Image_adapter.ViewHolder holder, final int position) {
Log.d(TAG, "onBindViewHolder: called.");
RequestOptions requestOptions = new RequestOptions()
.placeholder(R.drawable.ic_launcher_background);
Glide.with(mContext)
.load(image.get(position).getImage_url())
.apply(requestOptions)
.into(holder.image);
holder.name.setText(image.get(position).getImage_description());
holder.image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(TAG, "onClick: clicked on: " + image.get(position).getImage_description());
Toast.makeText(mContext, image.get(position).getImage_description(), Toast.LENGTH_SHORT).show();
}
});
holder.count.setText(image.get(position).getImage_count()+"+");
holder.likeButton.setOnLikeListener(new OnLikeListener() {
@Override
public void liked(LikeButton likeButton) {
final DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference("Image_Array").child(image.get(position).getId()).child("love_count");
mDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Image totalLikes = dataSnapshot.getValue(Image.class);
String totalLikes = dataSnapshot.getValue(String.class);
int n=Integer.parseInt(totalLikes)+1;
//Image totalLikes =(Image) dataSnapshot.getValue();
mDatabase.setValue(n+"");
Log.d(TAG,n+"");
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
@Override
public void unLiked(LikeButton likeButton) {
}
});
}