Witaj Sieciowy Szperaczu :)
Wiedz, że nie znajdziesz tutaj kodów źródłowych ani poradników jak kodzić dobre i przemyślane aplikacje na Androida.

Za to zobaczysz moje wolne przemyślenia, porady i pomysły. Dowiesz się też z czym miałem problemy, które napotkałem podczas swojej przygody z 'Andkiem' oraz, co ważniejsze, ich rozwiązania.

wtorek, 14 czerwca 2011

setContentView(R.layout.main); a ListActivity

Kolejny dzień, kolejny problem.
Co się stało? Chcąc pobawić się adapterami w Androidzie, po napisaniu kodu aplikacja cały czas się wysypywała, nie wiedzieć dlaczego, skoro kod był prosty, czysty i przejrzysty.
Moja główna klasa dziedziczyła po ListActivity zamiast Activity, co za tym idzie, przy osadzaniu listy w widoku, w ten sposób:




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class MainActivity extends ListActivity {
 TextView selection;
 String[] items = {"lody", "burak", "cos", "Cluedo", "lampka", "wazon",
       "inne", "samochod"};
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
                        
        setListAdapter(new ArrayAdapter<String>(
             this, 
             android.R.layout.simple_list_item_1, 
             items));        
                               
    }
}


Dlaczego kod nie działa? Dziwnym trafem, którego póki co nie jestem w stanie wytłumaczyć, wadzi tutaj setContentView(R.layout.main);. Kiedy się pozbędziemy tego, wszystko jest OK.
Rozwiązanie
Wszystko się wyjaśniło. W pliku odpowiedzialnym za widok (layout/main.xml):
1
2
3
4
5
6
7
<ListView 
 android:id="@android:id/list"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:drawSelectorOnTop="true"
 > 
</ListView>

Należy tutaj pamiętać, aby naszemu ListView nadać id o wartości: android:id="@android:id/list". Trzeba to zrobić, aby klasa dziedzicząca po ListActivity wiedziała, który ListView jest tym głównym. Bez tego ani rusz. Sprawa rozwiązana :)

Brak komentarzy:

Prześlij komentarz