2016-07-29 9 views
0
private Bundle detailsbundle = new Bundle(); 
private onFABCLick mlistener; 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_details, container, false); 
    TextView naam = (TextView) view.findViewById(R.id.name); 
    TextView adres = (TextView) view.findViewById(R.id.adress); 
    TextView gemeente = (TextView) view.findViewById(R.id.gemeente); 
    TextView deelgemeente = (TextView) view.findViewById(R.id.deelgemeente); 
    TextView postcode = (TextView) view.findViewById(R.id.postcode); 
    final ImageButton favourite = (ImageButton) view.findViewById(R.id.imageButton); 
    naam.setText(detailsbundle.getString(DETAILS_NAAM)); 
    adres.setText(detailsbundle.getString(DETAILS_ADRES)); 
    gemeente.setText(detailsbundle.getString(DETAILS_GEMEENTE)); 
    deelgemeente.setText(detailsbundle.getString(DETAILS_DEELGEMEENTE)); 
    postcode.setText(detailsbundle.getString(DETAILS_POSTCODE)); 
    boolean isFavourite = detailsbundle.getBoolean(DETAILS_FAVOURITE); 
    if(isFavourite){ 
     favourite.setImageResource(R.drawable.ic_star_black_18dp); 
     favourite.setTag(R.drawable.ic_star_black_18dp); 
    } 
    else{ 
     favourite.setTag(R.drawable.ic_star_border_black_18dp); 
    } 
    favourite.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mlistener.onFavClick(favourite); 
     } 

    }); 
    return view; 

} 


@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
    if (context instanceof onFABCLick) { 
     mlistener = (onFABCLick) context; 
    } else { 
     throw new RuntimeException(context.toString() 
       + " must implement interface"); 
    } 

} 


public interface onFABCLick{ 
    public void onFavClick(ImageButton favourite); 
} 

In meiner Tätigkeit:Image mehr Klicks

public void onFavClick(ImageButton favourite) { 
    if ((Integer)favourite.getTag() == R.drawable.ic_star_border_black_18dp){ 
     favourite.setImageResource(R.drawable.ic_star_black_18dp); 
    } 
    else{ 
     favourite.setImageResource(R.drawable.ic_star_border_black_18dp); 
    } 
} 

Also im Grunde, was mein Code tun sollte: Wenn die Schaltfläche geklickt wird, und es ist ein Favorit, es aus der Datenbank entfernt wird (noch brauchen schreibe das, aber irrelevant) -> Icon ändert sich. Und umgekehrt. Wenn jemand jedoch seine Meinung ändert, muss er offensichtlich rückgängig gemacht werden, ohne die Seite zu ändern. Allerdings tut mein Code das nicht, es ist nur möglich, einmal auf die Schaltfläche zu klicken, beim zweiten Mal wird nichts getan (beide Möglichkeiten für den ersten Klick).

Wie kann ich das lösen?

Antwort

1

Auf onFavClick, müssen Sie auch den Tag ändern, sonst wird der Tag gleich bleibt.

public void onFavClick(ImageButton favourite) { 
     if ((Integer)favourite.getTag() == R.drawable.ic_star_border_black_18dp){ 
      favourite.setImageResource(R.drawable.ic_star_black_18dp); 
      favourite.setTag(R.drawable.ic_star_black_18dp); } 
    } else{ 
      favourite.setImageResource(R.drawable.ic_star_border_black_18dp); 
      favourite.setTag(R.drawable.ic_star_border_black_18dp); } 
    } } 
0

Sie können für Ihre Schaltfläche implementieren diese Ereignisse klickt:

private int _clicks = 0; 
k = (ImageButton)findViewById(R.id.imageButton1); 


    if(count == 1) 
     //do whatever 
    if(count == 2) 
     //do whatever 
    if(count == 3) 
     //do whatever 
} 
});