我有一个网格视图,我试图在其中添加大量数据, 如果我尝试重用Gridview中的layoutinflater而不是重复项目,如果我尝试加载新的布局,那么滚动卡住我应该在这种情况下做什么。以下是我正在使用的代码:
if (convertView == null) { // if it's not recycled, initialize some
if (DownloadModualActivity.count_screen_normal == 1) {
LayoutInflater li = (LayoutInflater) ctx
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = li.inflate(R.layout.magazine_container_mobile, parent,
false);
// v = li.inflate(R.layout.magazine_container_mobile, null);
}
if (DownloadModualActivity.count_screen_normal != 1) {
LayoutInflater li = (LayoutInflater) ctx
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// v = li.inflate(R.layout.magazine_container4, null);
v = li.inflate(R.layout.magazine_container4, parent, false);
}
} else {
v = (View) convertView;
}
答案 0 :(得分:0)
查看this网站,列表视图的效果提示和模式。您可以将相同的内容应用于gridview。
检查异步加载,如果你有大量的操作,你应该加载asynctask来释放ui线程。
答案 1 :(得分:0)
据我所知,您正在尝试将两个不同的视图附加到列表视图中。那么你需要的是那些方法。实现这些方法,然后再试一次。
@Override
public int getItemViewType(int position) {
// you need to return the index of your view you want to return according to your
// algorithm.
return 0;
}
@Override
public int getViewTypeCount() {
return 2;
}
在getView()方法中,你可以使用下面这个。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
YourDataModel item = getItem(position);
switch (getItemViewType(position)) {
case 0:
return getViewFirstItem(position, convertView, item);
case 1:
return getViewSecondItem(position, convertView, item);
}
return null;
}
在getViewFirstItem()和getViewSecondItem()内部尝试为两种不同的View类型实现两个不同的getView版本。