I have a list view with custom list adapter in which each row contain two buttons,in which for buttons selector is used. so problem is that when i click on any button the background is changed only for last row button instead of pressed button. How can I solve this prolem please help!!
public commentListAdapter(Activity activity, Class<CommentData> modelClass, int modelLayout, DatabaseReference ref,String mEmail,String qid) {
super(activity, modelClass, modelLayout, ref);
this.mActivity=activity;
this.email=mEmail;
this.qid=qid;
}
ViewHolder holder=new ViewHolder();
@Override
protected void populateView(View v, CommentData model, int position) {
holder.usernameText=(TextView)v.findViewById(R.id.list_comment_username);
holder.commentText=(TextView)v.findViewById(R.id.list_comment_text);
holder.agreeButto=(Button) v.findViewById(R.id.list_comment_agree);
holder.disagreeButton=(Button)v.findViewById(R.id.list_comment_disagree);
v.setTag(holder);
holder.usernameText.setText(model.getUserId());
holder.commentText.setText(model.getComment());
CommentKey=model.getKey();
DatabaseReference feedRef=rootRef.child(qid).child(Constant.COMMENT).child(CommentKey);
final DatabaseReference agreeref=feedRef.child(Constant.AGREE).child(email);
final DatabaseReference disagreeref=feedRef.child(Constant.DISAGREE).child(email);
holder.agreeButto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
agreeref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
agreeRef = dataSnapshot.getValue(String.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
if (agreeRef==null){
agreeref.setValue("Agree");
holder.agreeButto.setSelected(true);
disagreeref.setValue(null);
}else {
agreeref.setValue(null);
holder.agreeButto.setSelected(false);
}
}
});
holder.disagreeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
disagreeref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
disareeRef=dataSnapshot.getValue(String.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
if (disareeRef==null){
disagreeref.setValue("Disagree");
holder.disagreeButton.setSelected(true);
agreeref.setValue(null);
}else {
disagreeref.setValue(null);
holder.disagreeButton.setSelected(false);
}
}
});
}
Aucun commentaire:
Enregistrer un commentaire