【问题标题】:Android GridView Scrolling issueAndroid GridView 滚动问题
【发布时间】:2020-04-27 12:25:26
【问题描述】:

我遇到了一个问题,即滚动到第 4 行或超过 2 秒后,我的 GridView “剪辑”/“故障”。
我有 58 个项目,它们通过适配器加载到 GridView 中。一个项目由一个文件名和一个项目的图像(缩略图)组成。每个缩略图的宽度和高度为 100dp,并通过框架“Glide”加载到 ImageButton 中,无需调整大小、裁剪或其他任何内容。简单Glide.load(ressource).into(imageButton)

请参阅所附图片以了解我的进一步解释。
滚动后,我希望我的项目像之前的前 15-19 个项目一样对齐。不幸的是,它仅从 GridView 滚动第 4 行的“最后一项”。这意味着在第 2 点(图片中的红色数字),如果我滚动浏览它们,所有其他项目都会在短时间内出现。

进一步滚动后,整个 GridView 和 Scrollbar 被“破坏”,只出现少量项目,最后出现 1 个或没有项目。我可以看到,滚动条在滚动后下降得非常快。

GridView xml 属性(在 main_activity.xml 中):

android:columnWidth="100dp"
android:gravity="center"
android:horizontalSpacing="5dp"
android:numColumns="auto_fit"
android:verticalSpacing="20dp"
android:visibility="visible"

GridViewAdapter 代码:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    _layoutInflater = (LayoutInflater) _context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        _view = new View(_context);
        _view = _layoutInflater.inflate(R.layout.single_item, null);
        TextView textView = _view.findViewById(R.id.textView);
        final Item item = _items.get(position);
        textView.setText(item.getName());
        ImageButton imageButton = _view.findViewById(R.id.imageButton);
        Glide.with(_context).load(item.getDrawableRessource()).into(imageButton);
        imageButton.setOnClickListener(click -> {
            _iOnItemClickListener.onClick(item);
        });
    }
    return _view;
}

感谢您提供任何有用的建议。

【问题讨论】:

    标签: android gridview android-gridview


    【解决方案1】:

    试试这个:

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        _view = convertView;
        if (convertView == null) {
            _layoutInflater = (LayoutInflater) _context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            _view = _layoutInflater.inflate(R.layout.single_item, null);
        }
        TextView textView = _view.findViewById(R.id.textView);
        final Item item = _items.get(position);
        textView.setText(item.getName());
        ImageButton imageButton = _view.findViewById(R.id.imageButton);
        Glide.with(_context).load(item.getDrawableRessource()).into(imageButton);
        imageButton.setOnClickListener(click -> {
            _iOnItemClickListener.onClick(item);
        });
        return _view;
    }
    

    【讨论】:

    • 非常感谢您的帮助。它现在按预期工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    相关资源
    最近更新 更多