2016-03-21 17 views
3

Dies ist eine Frage zur Android-Programmierung. Ich muss die maximale Anzahl der sichtbaren Zeilen in meinem ListView begrenzen.Maximale Anzahl Zeilen für einen ListView setzen

In onCreate Methode habe ich den nächsten Code für meine ListView:

listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayListOfElements)); 

In onPostExecute Methode Ich habe den nächsten Adapter:

ArrayAdapter<String> adapter = (ArrayAdapter<String>) arrayListOfElements.getAdapter(); 
adapter.notifyDataSetChanged(); 

Also brauche ich eine maximale Anzahl von Zeilen setzen für meinem Adapter ist es mir egal, ob der ListView scrollbar ist oder nicht. Irgendeine Idee?

Antwort

0
@Override 
public int getCount() { 
    return YOUR_LIMIT; 
} 

Mit BaseAdapter ‚s getCount() Methode in diesem Fall helfen kann.

+0

Wenn Sie Wenn Sie 3 Listenelemente und ein Limit von 20 haben, würde dieses Beispiel 20 zurückgeben. Aber wäre 3 nicht die richtige Zahl für die Rückkehr? Ich verstehe nicht genau, wie dieser Code helfen könnte ... –

+0

Sie benötigen etwas wie Math.min (list.size(), LIMIT): –

+0

if (list.size() Ozgur

4

Tun Sie dies in Ihrem Basis-Adapter (MList ist die Liste der Elemente in der Listenansicht zeigen):

public int getCount() { 
    if (mList != null) { 
     return Math.min(mList.size(), YOU_MAX_VALUE); 
    } else { 
     return 0; 
    } 
} 
0

Sie eine Grenze für Ihr Array festlegen (arrayListOfElements) oder es vor der Vereinigung mit dem gestutzt Adapter. Der truncate kann wie folgt sein:

if(arrayListOfElements.size()>MAXCOUNT) 
{ 
    for(int i=MAXCOUNT;i<arrayListOfElements.size();i++) 
    { 
     arrayListOfElements.remove(i); 
    } 
} 

Wenn Sie das ursprüngliche Array nicht ändern möchten Sie eine Kopie davon machen können:

ArrayList<String> copy=new ArrayList(arrayListOfElements); 
+0

Das ist, was ich suche, danke! –

+0

Kein Problem! Wenn diese Antwort Ihnen hilft, markieren Sie sie wie die richtige für andere mit dem gleichen Problem. – DonLeopardo

2

Sie, dass Sie an der Stelle umgehen kann, wo fügen Sie die Elemente "arrayListOfElements"

zum Beispiel: sagen wir die max Artikel ist 10

int maxItemsToDisplay; 
if(nodeList.getLength() > 10) 
    maxItemsToDisplay = 10; 
else 
    maxItemsToDisplay = nodeList.getLength(); 

for(int i = 0; i<maxItemsToDisplay; i++) 
{ 
    ... 
    arrayListOfElements.add(item(i)); 

} 
Verwandte Themen