1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Listview-Problem: Einträge erst nach Scrollen sichtbar

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von R3L, 26.01.2010.

  1. R3L, 26.01.2010 #1
    R3L

    R3L Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    26.01.2010
    Hallo zusammen,

    ich habe ein (kurioses?) Problem mit ListView.
    Ich verwendene "Custom Rows". Zum Testen erstmal alles relativ einfach gehalten (könnte sein dass dem einen oder anderen Teile des Codes bekannt vorkommen ;) )
    Das Interessante hierbei ist: Wenn ich die App starte, sieht man zwar, dass die Rows (Reihen?) aufgelistet werden, aber ohne Inhalt. erst wenn ich runter und danach wieder hochscrolle, sieht man den Inhalt. Und daher spontan meine Frage: Wieso :(?
    Das gleiche Phänomen tritt auch beim Testen auf dem Handy auf (HTC Magic).


    PHP:
    package com.android.test;

    import java.util.ArrayList;
    import java.util.List;

    import android.R.string;
    import android.app.Activity;
    import android.app.ListActivity;
    import android.app.ProgressDialog;
    import android.content.Context;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.TextView;

    public class 
    ComparisonView extends Activity{
       
        private 
    ItemsAdapter adapter;
        
          static final 
    String[] COUNTRIES = new String[] {
                
    "Afghanistan""Albania""Algeria""American Samoa""Andorra",
                
    "Angola""Anguilla""Antarctica""Antigua and Barbuda""Argentina",
                
    "Armenia""Aruba""Australia""Austria""Azerbaijan",
                
    "Bahrain""Bangladesh""Barbados""Belarus""Belgium",
                
    "Belize""Benin""Bermuda""Bhutan""Bolivia",
                
    "Bosnia and Herzegovina""Botswana""Bouvet Island""Brazil""British Indian Ocean Territory",
                
    "British Virgin Islands""Brunei""Bulgaria""Burkina Faso""Burundi",
                
    "Cote d'Ivoire""Cambodia""Cameroon""Canada""Cape Verde",
                
    "Cayman Islands""Central African Republic""Chad""Chile""China",
                
    "Christmas Island""Cocos (Keeling) Islands""Colombia""Comoros""Congo",
                
    "Cook Islands""Costa Rica""Croatia""Cuba""Cyprus""Czech Republic",
                
    "Democratic Republic of the Congo""Denmark""Djibouti""Dominica""Dominican Republic",
                
    "East Timor""Ecuador""Egypt""El Salvador""Equatorial Guinea""Eritrea",
                
    "Estonia""Ethiopia""Faeroe Islands""Falkland Islands""Fiji""Finland",
                
    "Former Yugoslav Republic of Macedonia""France""French Guiana""French Polynesia",
                
    "French Southern Territories""Gabon""Georgia""Germany""Ghana""Gibraltar",
                
    "Greece""Greenland""Grenada""Guadeloupe""Guam""Guatemala""Guinea""Guinea-Bissau",
                
    "Guyana""Haiti""Heard Island and McDonald Islands""Honduras""Hong Kong""Hungary",
                
    "Iceland""India""Indonesia""Iran""Iraq""Ireland""Israel""Italy""Jamaica",
                
    "Japan""Jordan""Kazakhstan""Kenya""Kiribati""Kuwait""Kyrgyzstan""Laos",
                
    "Latvia""Lebanon""Lesotho""Liberia""Libya""Liechtenstein""Lithuania""Luxembourg",
                
    "Macau""Madagascar""Malawi""Malaysia""Maldives""Mali""Malta""Marshall Islands",
                
    "Martinique""Mauritania""Mauritius""Mayotte""Mexico""Micronesia""Moldova",
                
    "Monaco""Mongolia""Montserrat""Morocco""Mozambique""Myanmar""Namibia",
                
    "Nauru""Nepal""Netherlands""Netherlands Antilles""New Caledonia""New Zealand",
                
    "Nicaragua""Niger""Nigeria""Niue""Norfolk Island""North Korea""Northern Marianas",
                
    "Norway""Oman""Pakistan""Palau""Panama""Papua New Guinea""Paraguay""Peru",
                
    "Philippines""Pitcairn Islands""Poland""Portugal""Puerto Rico""Qatar",
                
    "Reunion""Romania""Russia""Rwanda""Sqo Tome and Principe""Saint Helena",
                
    "Saint Kitts and Nevis""Saint Lucia""Saint Pierre and Miquelon",
                
    "Saint Vincent and the Grenadines""Samoa""San Marino""Saudi Arabia""Senegal",
                
    "Seychelles""Sierra Leone""Singapore""Slovakia""Slovenia""Solomon Islands",
                
    "Somalia""South Africa""South Georgia and the South Sandwich Islands""South Korea",
                
    "Spain""Sri Lanka""Sudan""Suriname""Svalbard and Jan Mayen""Swaziland""Sweden",
                
    "Switzerland""Syria""Taiwan""Tajikistan""Tanzania""Thailand""The Bahamas",
                
    "The Gambia""Togo""Tokelau""Tonga""Trinidad and Tobago""Tunisia""Turkey",
                
    "Turkmenistan""Turks and Caicos Islands""Tuvalu""Virgin Islands""Uganda",
                
    "Ukraine""United Arab Emirates""United Kingdom",
                
    "United States""United States Minor Outlying Islands""Uruguay""Uzbekistan",
                
    "Vanuatu""Vatican City""Venezuela""Vietnam""Wallis and Futuna""Western Sahara",
                
    "Yemen""Yugoslavia""Zambia""Zimbabwe"
              
    };
        
        @
    Override
        
    public void onCreate(Bundle savedInstanceState) {
            
    super.onCreate(savedInstanceState);
            
    setContentView(R.layout.main);
            
             
               
    this.adapter = new ItemsAdapter(thisR.layout.rowthis.COUNTRIES);

               
    TextView tv = (TextView)findViewById(R.id.firstText);
               
    tv.setText"Anfang" );

               
    ListView lv = (ListView)findViewById(R.id.list);
               
    lv.setAdapter(this.adapter);
        }

        private class 
    ItemsAdapter extends ArrayAdapter<String> {

            private 
    String[] items;

            public 
    ItemsAdapter(Context contextint textViewResourceIdString[] items) {
                    
    super(contexttextViewResourceIditems);
                    
    this.items items;
            }

            @
    Override
            
    public View getView(int positionView convertViewViewGroup parent) {
                    
    View v convertView;
                    if (
    == null) {
                            
    LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    
    vi.inflate(R.layout.rownull);
                    }
                    
                    
    //Item it = this.items.get(position);
                    
    String c this.items[position];
                    if (
    != null) {
                            
    TextView tt = (TextView)findViewById(R.id.toptext);
                            if( 
    tt != null ) {
                                
    tt.setText);
                            }
                    }

                    return 
    v;
            }
        }


    }
    In den Logs konnte ich auch nichts entdecken, weiß allerdings auch nicht wirklich, wonach ich bei so einem Problem gucken kann :confused:

    Für Anregungen wäre ich sehr dankbar.

    Beste Grüße.
     
  2. Goonie, 27.01.2010 #2
    Goonie

    Goonie Neuer Benutzer

    Beiträge:
    11
    Erhaltene Danke:
    2
    Registriert seit:
    23.11.2009
  3. R3L, 27.01.2010 #3
    R3L

    R3L Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    26.01.2010
    Hi Andreas,

    viele Dank für deine Antwort.
    Hat leider auch nicht geklappt.
    Hab auch mal die Hintergrund- und Schriftfarbe geändert.
    Es ist das gleiche Ergebnis. Was auch sehr merkwürdig ist:
    Als erster Eintrag erscheint nicht der erste Wert aus dem Array, sondern der 12. (hier; "Aruba"). Und trotzdem erscheint dann dieser Eintrag auch nochmal an Platz 12 ... sehr verwirrend :eek:

    Hier nochmal die vorher/nachher-Bilder:

    Direkt nach dem Start:
    [​IMG]

    Nach dem Scrollen (hab solange runtergescrollt, bis die nicht ausgefüllten Reihen nicht mehr zu sehen waren - alle Laender unterhalb der sichtbaren Grenze im Bild, waren beim runterscrollen sofort zu sehen):
    [​IMG]
     
  4. swordi, 27.01.2010 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ich würde vermuten, das liegt an der getView methode. guck dir die nochmal genau an und lass mal das "unnötige" zeug weg, das man nicht unbedingt braucht
     
  5. R3L, 27.01.2010 #5
    R3L

    R3L Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    26.01.2010
    Ah vielen Dank. Damit geht eine längere Odyssee zu Ende :)

    Hier die Lösung:
    PHP:
                    if (!= "" && != null) {
                            
    TextView tt = (TextView)v.findViewById(R.id.toptext);
                            if( 
    tt != null ) {
                                
    tt.setText);
                            }
                    }
    Der Unterschied hier ist: Ich suche die Id direkt in dem View v.
    Im Nachhinein erscheint es natürlich logisch, sich auf das (die?) View zu beziehen ... aber dadurch dass ich es von einem Beispiel ausm Netz genommen hab, hab ich das die ganze Zeit übersehn :eek:

    Danke nochmal,
    R3L
     
  6. swordi, 28.01.2010 #6
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    super, wenns jetzt endlich geht ;)
     

Diese Seite empfehlen