甚至没有列出的所有内容都在用recyclerView滚动

时间:2019-07-15 04:28:04

标签: java android android-studio android-recyclerview imageview

我使用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,但是使应用程序崩溃:(

2 个答案:

答案 0 :(得分:0)

尝试使用此示例

步骤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;
}
}

第3步:创建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);

答案 1 :(得分:0)

通过多次尝试,我找到了解决方案。

您可以在引入recyclerView的布局中将要显示的任何视图放在recyclerView旁边。 :)