Android GridView 滚动问题
Android GridView Scrolling issue
我遇到一个问题,我的 GridView "clips"/"glitches" 在我滚动到第 4 行或超过 2 秒后。
我有 58 个项目,它们通过适配器加载到 GridView 中。项目由文件名和项目图像(缩略图)组成。每个缩略图的宽度和高度均为 100dp,并通过框架 "Glide" 加载到 ImageButton 中,无需调整大小、裁剪或其他任何操作。简单Glide.load(ressource).into(imageButton)
。
请参阅附件图片以了解我的进一步解释。
滚动后,我希望我的项目像之前的前 15-19 个项目一样对齐。不幸的是,它仅从 GridView 滚动第 4 行的 "last Item"。这意味着在第 2 点(图片中的红色数字),如果我滚动浏览它们,所有其他项目都会在短时间内出现。
进一步滚动后,整个 GridView 和 Scrollbar 得到 "destroyed",只有少量项目出现,最后 1 或 none 项目出现。我可以看到,滚动条在滚动后下降得非常快。
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;
}
感谢任何有用的建议。
试试这个:
@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;
}
我遇到一个问题,我的 GridView "clips"/"glitches" 在我滚动到第 4 行或超过 2 秒后。
我有 58 个项目,它们通过适配器加载到 GridView 中。项目由文件名和项目图像(缩略图)组成。每个缩略图的宽度和高度均为 100dp,并通过框架 "Glide" 加载到 ImageButton 中,无需调整大小、裁剪或其他任何操作。简单Glide.load(ressource).into(imageButton)
。
请参阅附件图片以了解我的进一步解释。
滚动后,我希望我的项目像之前的前 15-19 个项目一样对齐。不幸的是,它仅从 GridView 滚动第 4 行的 "last Item"。这意味着在第 2 点(图片中的红色数字),如果我滚动浏览它们,所有其他项目都会在短时间内出现。
进一步滚动后,整个 GridView 和 Scrollbar 得到 "destroyed",只有少量项目出现,最后 1 或 none 项目出现。我可以看到,滚动条在滚动后下降得非常快。
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;
}
感谢任何有用的建议。
试试这个:
@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;
}