Android: Aufblasen layout dauert zu lange

Lösung gefunden!

Ich verwende jetzt einen ViewPager statt einen ViewFlipper.
Die Ansichten werden jetzt erzeugt, die in meiner run () - Methode (die ist schon da, da Hole ich meine Daten aus dem web) und saveed in einer Karte.
In meinem Hf habe ich nur rufen pagerAdapter.notifyDataSetChanged() die pagerAdapter nutzt die Karte von Ansichten, und es funktioniert glatt und schnell.
Also ich bin jetzt auf der Suche nach einem Weg, um die ViewPager endlos scrollen, aber das ist ein problem damit nicht verbunden ist 😉

Danke Euch allen für Eure Antworten und halten Sie die gute Unterstützung.

Ich bin ganz neu in der Android Entwicklung und mit einem problem konfrontiert, während das aufblasen eines (riesigen) layout.
Ich habe immer einige Daten aus einem Webservice, der gut arbeitet, dann bin ich mit einem handler innerhalb meiner Tätigkeit, um diese Daten an das frontend. Hier ist mein handleMessage:

    public void handleMessage(Message msg) {
        LayoutInflater inflater = getLayoutInflater();

        List<Integer> gamedays = new ArrayList<Integer>(games.keySet());
        Collections.sort(gamedays);

        for (Integer gameday : gamedays) {

            View gamedaytable = inflater.inflate(R.layout.gamedaytable, null);
            TableLayout table = (TableLayout) gamedaytable.findViewById(R.id.gameDayTable);
            table.removeAllViews();
            List<Game> gamelist = games.get(gameday);
            int rowcount = 2;
            for (Game game : gamelist) {

                View tableRow = inflater.inflate(R.layout.gamedayrow, null);

                TextView homeTeam = (TextView) tableRow.findViewById(R.id.gameDayHome);
                TextView awayTeam = (TextView) tableRow.findViewById(R.id.gameDayAway);
                TextView gameResult = (TextView) tableRow.findViewById(R.id.gameDayResult);
                gameResult.setBackgroundResource(R.drawable.resultbackground);
                homeTeam.setText(game.getHomeTeam().getName());
                awayTeam.setText(game.getAwayTeam().getName());
                if (game.getHomegoals() < 0 || game.getAwaygoals() < 0) {
                    gameResult.setText("-:-");
                } else {
                    gameResult.setText(game.getHomegoals() + ":" + game.getAwaygoals());
                }

                if (rowcount % 2 == 0) {
                    tableRow.setBackgroundColor(0xffdee0dd);

                } else {
                    //setting alternative background
                    tableRow.setBackgroundColor(0xfff1f3f0);
                }
                rowcount++;

                table.addView(tableRow);
            }
            flipper.addView(gamedaytable);
        }
        flipper.setDisplayedChild(thisgameday - 1);
        pd.dismiss();

    }

Mein Problem ist, dass dieser code läuft ganz langsam und d die processdialog friert für etwa 1 Sekunde, bevor es verschwindet und das layout wird angezeigt.
Spiele besteht aus 34 Einträge enthält 9 Einträge von selbst.
Also ich bin das hinzufügen 34 Ansichten aus einem relativeLayout () enthält die Tabelle
Ich denke, das problem ist, dass android beginnt zu zeichnen und calculte das layout und das dauert zu lange.
Wenn ich richtig bin kann ich nicht verwenden AsynTask, weil ich nicht tun kann, UI-Sachen dort und im tun-UI-Zeugs nur.

Ich Suche nach einem Weg, um die dialog-Prozess nicht einfrieren, während dies zu tun.
Oder vielleicht mache ich etwas komplett falsch

R. layout.gamedaytable:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff1f3f0"
android:focusableInTouchMode="false" >

<TableLayout
    android:id="@+id/gameDayTable"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:focusableInTouchMode="false" >
</TableLayout>

</RelativeLayout>

R. layout.gamedayrow:

<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableRow1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:focusableInTouchMode="false"
android:paddingBottom="5dp"
android:paddingTop="5dp" >

<TextView
    android:id="@+id/gameDayHome"
    style="@style/textsizeSmallScreen"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:text="Mannschaft 1" />

<TextView
    android:id="@+id/textView2"
    style="@style/textsizeSmallScreen"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:text=":" />

<TextView
    android:id="@+id/gameDayAway"
    style="@style/textsizeSmallScreen"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Mannschaft 2" />

<TextView
    android:id="@+id/gameDayResult"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="5dp"
    android:background="@drawable/resultbackground"
    android:paddingLeft="10dip"
    android:text="0:5"
    android:textColor="#FFFFFF"
    android:textSize="11dp"
    android:textStyle="bold"
    android:typeface="monospace" />

</TableRow>

Zusätzliche Info:
Dies ist, wie die Tabelle Aussehen sollte.
Also ich bin mir nicht sicher, ob dies wirklich so sein sollte eine ListView, weil für mich seine tabledata 😉

Tabelle

InformationsquelleAutor amfa | 2012-03-10
Schreibe einen Kommentar