lundi 20 juin 2016

List view with custom adapter buttons background

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