2012-01-19 31 views
5

Moja aktywność z listą cytowań jest następująca.Jak ustawić ikonę ulubionych gwiazdek na WŁĄCZONE po kliknięciu i WYŁ. Po ponownym kliknięciu w Androidzie

package bank.quotes.famous; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.CheckBox; 

public class QuotesActivity extends FamousQuotesActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.quoteslayout); 

     CheckBox favButton = (CheckBox)findViewById(R.id.favbutton); 

Próbowałem dodać twój kod tutaj bez powodzenia. Moje XML jest jak poniżej,>

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <ScrollView 
     android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="856dp" 
     android:background="@android:color/white" 
     android:orientation="vertical" > 

     <TableRow 
      android:id="@+id/TableRow03" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="0.25" > 

      <RelativeLayout 
       android:id="@+id/RelativeLayout08" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:background="@drawable/forquotesgrey" > 



       <TextView 
        android:id="@+id/TextView22" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentTop="true" 
        android:text="@string/albertquote" 
        android:textAppearance="?android:attr/textAppearanceMedium" /> 


       <TextView 
        android:id="@+id/TextView21" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentBottom="true" 
        android:layout_alignParentRight="true" 
        android:text="@string/alberteinstein" 
        android:textAppearance="?android:attr/textAppearanceMedium" /> 


       <CheckBox 
        android:id="@+id/favbutton" 
        style="?android:attr/starStyle" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_above="@+id/TextView21" 
        android:layout_alignParentRight="true" /> 

      </RelativeLayout> 
     </TableRow> 

     <TableRow 
      android:id="@+id/TableRow06" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="0.25" > 

      <RelativeLayout 
       android:id="@+id/RelativeLayout10" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:background="@drawable/forquotesgrey" > 


       <TextView 
        android:id="@+id/TextView16" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentTop="true" 
        android:text="@string/stevequote" 
        android:textAppearance="?android:attr/textAppearanceMedium" 
        android:textColor="@android:color/black" /> 


       <TextView 
        android:id="@+id/TextView15" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentBottom="true" 
        android:layout_alignParentRight="true" 
        android:text="@string/stevejob" 
        android:textAppearance="?android:attr/textAppearanceMedium" 
        android:textColor="@android:color/black" /> 

       <CheckBox 
        android:id="@+id/CheckBox01" 
        style="?android:attr/starStyle" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentRight="true" 
        android:layout_centerVertical="true" /> 

      </RelativeLayout> 
     </TableRow> 

Jeżeli użytkownik lubi cytat następnie, należy przejść do ulubionym zajęciem. Również przycisk ulubionych powinien zawsze świecić, jeśli jest ulubionym użytkownikiem. Tak działa ulubiony przycisk, prawda? To jest mój pierwszy raz, gdy dodaję ulubiony przycisk, więc mam mniej pomysłu na robienie tego. Gdybyś mi pomógł, naprawdę bym to docenił. Dziękuję.

+0

Czy jest to widok listy? – dcanh121

Odpowiedz

10

Jeśli chcesz używać stanowych elementów do rysowania, łatwiej będzie Ci przeskalować przycisk ToggleButton lub CheckBox niż przycisk ImageButton.

<CheckBox android:id="@+id/star" 
    style="?android:attr/starStyle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    /> 
+0

Dziękuję bardzo za pomoc. Ale co ja przypuszczam umieścić zamiast "someObject"? Próbowałem użyć przycisku przełączającego, ale pokazuje on domyślną ikonę wyłączenia. Ale chcę coś takiego jak ikona gwiazdy, która świeci po kliknięciu. Czy możesz to pokazać? –

+0

Powiedz, że zaznaczasz książkę jako ulubioną. someObject będzie twoim obiektem modelu, jak Book, Music lub Recipe. someObject.isFav() zwróci wartość true lub false, jeśli obiekt ten jest ulubionym dla tego użytkownika. toggleFavorite() byłoby po prostu odwrócić wartość logiczną tego obiektu, gdy zostanie wywołana. Przełącznik ToggleButton lub Checkbox sprawdzi się po prostu w stylu. Zmieniłem moją odpowiedź na Checkbox – chubbsondubs

+0

Jeszcze raz dziękuję za pomoc. Kod CheckBox zadziałał, ale nie jestem w stanie wypracować powyższego kodu. Kiedy umieszczam książkę zamiast "someObject", pojawia się komunikat "książka nie może być rozwiązana" ... to samo z "favButton". Czy powinienem zrobić coś innego poza tym? –

Powiązane problemy