尝试滚动时Gridview滚动卡住了

时间:2013-10-29 08:44:26

标签: android android-gridview

我有一个网格视图,我试图在其中添加大量数据, 如果我尝试重用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;
}

2 个答案:

答案 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版本。