我使用recyclerView进行水平图像滚动。在适配器中,我提到过仅对ImageView和TextView实现recyclerView。
然后在XML中,我添加了一些其他ImageView,以使回收器视图的图像共享,下载。
但是,所有其他imageView也将与回收者视图一起滚动。我想让他们保持稳定。这让我非常沮丧。
请帮助我,我是初学者
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<ImageView
android:id="@+id/imageView"
android:src="@drawable/ic_launcher_background"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/toolbar_bottom"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true" />
<TextView
android:id="@+id/word"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:ignore="MissingConstraints" />
<!--These 2 imageView are not listed in recyclerView but is still scrolling with recycler view. -->
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_navigate_next_black_24dp"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_others_black"/>
我试图在XML中添加
include
,但是导致应用程序崩溃:( 最佳答案
试试这个样本
步骤1:将Picasso库添加到build.gradel
Picasso Link
步骤2:建立资料保留模型
public class ImageSliderModel {
// you can create variable int or string path
private String image;
private String text;
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
第三步:创建recyclerview适配器
public class HorizontalImageAdapter extends RecyclerView.Adapter<HorizontalImageAdapter.ImageViewHolder> {
ArrayList<ImageSliderModel> imageSliderModels;
public HorizontalImageAdapter(ArrayList<ImageSliderModel> imageSliderModels) {
this.imageSliderModels = imageSliderModels;
}
@NonNull
@Override
public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ImageViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.your layout , parent, false));
}
@Override
public void onBindViewHolder(@NonNull ImageViewHolder holder, int position) {
holder.bind(imageSliderModels.get(position));
}
@Override
public int getItemCount() {
return imageSliderModels.size();
}
class ImageViewHolder extends RecyclerView.ViewHolder {
private ImageView imageView;
private TextView textView;
public ImageViewHolder(@NonNull View itemView) {
super(itemView);
//your custom layout imageview id
//imageView = itemView.findViewById(R.id.your custom layout imageview id);
//your custom layout textview id
//textView = itemView.findViewById(R.id.your custom layout textview id);
}
public void bind(ImageSliderModel model) {
// Picasso is the best library for loading image
// you can added this implementation 'com.squareup.picasso:picasso:2.71828' build.gradle file into tag dependencies and sync project and use
Picasso.get().load(model.getImage());
textView.setText(model.getText());
}
}
}
最后一步,将此代码设置为活动或视图以进行创建
ArrayList<ImageSliderModel> sliderModels = new ArrayList<>();
// create fake data
// you can give date in server and set your model array
for (int i = 0; i < 10; i++) {
ImageSliderModel sliderModel = new ImageSliderModel();
sliderModel.setImage("image path");
sliderModel.setText("text");
sliderModels.add(sliderModel);
}
// create adapter for recyclerview
HorizontalImageAdapter imageAdapter = new HorizontalImageAdapter(sliderModels);
//config recyclerview for showing rows horizontal and casting
RecyclerView recyclerView = findViewById(R.id.recy);
recyclerView.setLayoutManager(new LinearLayoutManager(this, RecyclerView.HORIZONTAL, false));
recyclerView.setHasFixedSize(true);
//set adapter in recyclerview
recyclerView.setAdapter(imageAdapter);
关于java - 甚至没有列出的所有内容都在用recyclerView滚动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57033256/