0

Je fais quelque chose comme une application sociale.Android: Affichage de la boîte de dialogue personnalisée, changez la couleur du bouton avant de l'afficher pour la première fois.

Je voudrais que si quelqu'un a déjà vu quelque chose avant, que le bouton dans la vue change de couleur.

J'ai une méthode pour vérifier si quelqu'un a déjà consulté cette liste. Cela fonctionne dans le clickListener, et dira "déjà pressé".

J'ai du mal à trouver comment changer la couleur du bouton, peut-être sur la méthode onCreate. J'ai essayé de le passer comme un argument, mais la couleur changera la deuxième fois que la liste est tirée vers le haut ...

C'est ainsi que j'appelle mon dialogue et lui transmets l'ID de liste.

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View r = inflater.inflate(R.layout.list_view_dialog_layout, container, false); 

    checklistView = (UserlistView) r.findViewById(R.id.user_list); 
    checklistview.getList(getArguments().getString("list_id")); // Can be modified 

    return r; 
} 

dans cette fonction getList, je fais mon appel à ma base de données pour obtenir les informations de la liste.

public void getList(final String listID) { 
    // TODO fetch list information from params and fill fields 
    Event.requestEvent(listID, "AuthToken", new List.ListReceivedListener() { 
     @Override 
     public void onListReceived(lissts... lissteses) { 
      List lst = lissteses[0]; 
      setInfo(lst); 
      LISTID = listID; 


     } 
    }); 
} 

public void setInfo(List lst){ 


    listTitleView.setText(lst.listName); 
    viewsCount.setText(Integer.toString(lst.views)); 

} 

J'ai une fonction de vérificateur pour voir si l'utilisateur a déjà cliqué sur le "ont vu"

booléen public static vu (id String, utilisateur final String) { DatabaseReference rootref = FirebaseDatabase.getInstance () .getReference ("views"). enfant (id);

rootref.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      if(dataSnapshot.hasChild(user)){ 
       result = true; 
      } 
      else{ 
       result = false; 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
    return result; 
} 

, je voulais appeler ce dans le getList() en tant que telle

if(viewed(lstID, curuser){ 
    viewButton.setColorFilter(R.color.blue); 
} 

cela ne fonctionne pas pour la première fois la vue est créée, et ainsi, si l'utilisateur a déjà a cliqué sur la vue, se déconnecte et se reconnecte, puis sur afficher à nouveau, ce qui désactive le nombre de vues.

+0

plz mettre à jour votre code ici, donc je ne peux ici ... –

+0

votre code postal ici, Afin que nous puissions comprendre problème – Bhavnik

+0

Vous devriez nous montrer le code que vous utilisez pour gérer le changement de couleur et où vous mettez alors nous pouvons vous aider. Avez-vous défini l'onClickListener après la mise à jour de la vue? –

Répondre

-1
int flag=0; 
    button.setOnClickLitener(new OnClickListener()){ 

     @Override 
     public void onClick(View arg0) { 
      flag++; 

     } 
    }); 
if(flag>0){ 
button.setBackgroundColor(getResources().getColor(R.color.yourColor)); 
} 
0

Une autre solution est la suivante.

button.setBackgroundColor(getResources().getColor(R.color.youCustomColor)); 
+0

Oui, le problème que j'ai est de le faire avant la première fois que la vue est tirée. – NatBat

+0

Partagez votre code lorsque vous trouvez que le bouton est déjà enfoncé ou non. –