设置ListView

时间:2016-03-21 22:05:54

标签: java android

这是关于Android编程的问题。我需要限制ListView中的最大可见行数。

onCreate方法中,我有ListView的下一个代码:

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

onPostExecute方法中我有下一个适配器:

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

所以我需要为我的适配器设置最大行数,我不在乎ListView是否可滚动。有什么想法吗?

4 个答案:

答案 0 :(得分:4)

在基础适配器中执行此操作(mList是列表视图中显示的项目列表):

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

答案 1 :(得分:2)

您可以在将项目添加到“arrayListOfElements”

的位置处理

例如:假设最大项目为10

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

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

}

答案 2 :(得分:0)

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

在这种情况下,使用BaseAdapter的{​​{1}}方法可以提供帮助。

答案 3 :(得分:0)

您可以在与适配器关联之前设置数组限制(arrayListOfElements)或截断它。 截断可以是这样的:

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

如果您不想修改原始阵列,可以复制它:

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