这是关于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
是否可滚动。有什么想法吗?
答案 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);