聚焦于recyclerview的一个条目

8

我正在尝试聚焦于recyclerview中的特定项。当使用recyclerview时,listview.setSelection(position)的等效方法是什么?

2个回答

19

要请求RecyclerView的LayoutManager在下一次布局传递中滚动到给定位置(它是异步的),请调用RecyclerView.scrollToPosition(position)

如果要请求聚焦项目视图,则该视图必须是可聚焦的,并且您需要调用View.requestFocus()。 如果在您想要对其进行聚焦时视图尚未布局,您可以在调用onViewAttachedToWindow()之后立即调用View.requestFocus()


1
在什么情况下,您会在项目视图中调用requestFocus以对应于RecyclerView滚动到该项目? - B W
2
当ViewHolder与您的项目匹配时,您可以在Adapter.onViewAttachedToWindow()中调用它。 您可以检查ViewHolder.getAdapterPosition() - BladeCoder

-3
在此示例中,存在一个ImageView,并且我设置了其OnClickListner。您需要在您的ViewHolder类中像这样操作:
public class ViewHolder extends RecyclerView.ViewHolder {

    public ViewHolder(View itemView, int viewType) {
        super(itemView);
    }

    public void setImage(String imagePath) {
        ImageView imageView = (ImageView) itemView.findViewById(R.id.images);
        if (null == imageView) return;
        final File file = new File(imagePath);
        if (file.exists()) {
            Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
            imageView.setImageBitmap(bitmap);
            imageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent i = new Intent(context, FullScreenImageActivity.class);
                    i.putExtra("image_path", file.getAbsolutePath());
                    context.startActivity(i);
                }
            });
        }
    }
}

1
在这里,您可以并且应该为itemView设置onClickListner。 - Akbar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接