我有一个自定义列表视图(有两个图像和5个文本视图),当我第一次加载所有数据然后它返回内存异常时,我必须显示200多个数据,以解决同样的问题我我希望当我们向下滚动列表视图直到列表的最后一项时,它再次将app添加到同一列表中。它运行相同,直到我们获得列表视图中的所有数据。请不要告诉我使用EndlessAdapter因为Endlessadapter总是在每10秒后下载一次。一段时间后,它还会返回内存。
提前致谢。
答案 0 :(得分:0)
为您的addapter分配一个列表http://developer.android.com/reference/java/util/List.html,然后您可以拨打item.add和item.remove
答案 1 :(得分:0)
答案 2 :(得分:0)
关于内存不足,5个imageViews和5个textViews无法导致内存不足。您可能正在将所有200个图像保存在一起,而不是使用某种缓存(如软引用和LruCache)。适配器的重点是使用最少的内存显示大量项目(当然不是同时)。你可以看到即使是游戏商店(我仍然喜欢称之为Android市场)应用程序使用内存缓存,如果你玩滚动就足够...
有关listview的更多信息,请观看this
您可能还想了解有关处理图片here的更多信息。
无论如何,您可以将getView作为触发器(使用position参数与getCount()值进行比较)以何时加载更多项目,然后使用notifyDatasetChanged更新适配器(并更新getCount()值)。 / p>
答案 3 :(得分:0)
我建议每次用户滚动时检查ListView的第一个元素的位置。
ListView.getFirstVisiblePosition()
如果它接近列表中元素的数量,您可以将项目添加到列表底部,并从列表顶部删除它们。
答案 4 :(得分:0)
当用户在ExpandableListView上向下滚动一次时,我做了类似的操作来加载更多元素。
myListView.setOnScrollListener( new OnScrollListener()
{
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
{
int lastVisibleElement = firstVisibleItem + visibleItemCount;
if(lastVisibleElement == totalItemCount)
{
//Load elements
myListAdapter.notifyDataSetChanged();
}
}