0

我正在开发一个 android 应用程序,我在其中使用了嵌套的 RecyclerView,但我没有实现我想要的。我想在这个列表上实现它应该显示标题和下面的多个图像,如下面的 json 我如何实现我正在使用两个查看器和它也应该滚动。 json结构

下面的适配器类公共类 UranAdapter 扩展 RecyclerView.Adapter {

public List<Exhibit> exhibitList;
public Context context;

public UranAdapter(List<Exhibit> uranList, Context context) {
    this.exhibitList = uranList;
    this.context = context;

}

@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {


    View itemView;
    switch (viewType) {
        case Exhibit.TEXT_TYPE:
            itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.exhibit_list, parent, false);
            return new ViewHolder(itemView);
        case Exhibit.IMAGE_TYPE:
            itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.exhibit_list2, parent, false);
            return new ImageViewHolder(itemView);

    }
    return null;
}

@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {

}


@Override
public int getItemViewType(int position) {


    return exhibitList.get(position).type;
}

public int getItemCount() {
    return exhibitList.size();
}


public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    Exhibit exhibit = exhibitList.get(position);
    switch (exhibit.type) {

        case Exhibit.TEXT_TYPE:
            ((ViewHolder) holder).exhibition_textView.setText(exhibit.getTitle());

            break;


        case Exhibit.IMAGE_TYPE:
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                ((ViewHolder) holder).exhibition_imageView.setImageResource(exhibit.image);
            }


            break;

    }

}



public static class ViewHolder extends RecyclerView.ViewHolder {


    public ImageView exhibition_imageView;
    TextView exhibition_textView;

    public ViewHolder(View view) {
        super(view);
        exhibition_textView = (TextView) view.findViewById(R.id.exhibition_textview);


    }
}
    public static class ImageViewHolder extends RecyclerView.ViewHolder {


        public ImageView exhibition_imageView;
        TextView exhibition_textView;

        public ImageViewHolder(View view) {
            super(view);
            exhibition_imageView = (ImageView) view.findViewById(R.id.exhibition_imageview);


        }
    }
}

在 MainActivity 下面

公共类 MainActivity 扩展 AppCompatActivity {

public List<Exhibit> exhibitList = new ArrayList<>();
Context context;
RecyclerView recyclerView;


public UranAdapter uranAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ApiInterface apiInterface = ApiClient.getApiService();
    Call<ExhibitsLoader> call = apiInterface.getExhibitList();
    call.enqueue(new Callback<ExhibitsLoader>() {
        @Override
        public void onResponse(Call<ExhibitsLoader> call, Response<ExhibitsLoader> response) {
            exhibitList = response.body().getExhibitList();
            exhibitList.add(new Exhibit(Exhibit.IMAGE_TYPE));
            RecyclerView recyclerView = findViewById(R.id.recycler_view);
            recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
            uranAdapter = new UranAdapter(exhibitList, context); // changes
            recyclerView.setAdapter(uranAdapter);

        }

        @Override
        public void onFailure(Call<ExhibitsLoader> call, Throwable t) {

        }
    });


}

}

下图我想要什么 图片

4

4 回答 4

0

为此使用 Expandable CardView .. 喜欢:https ://www.youtube.com/watch?v=z9qScBaKfnM&t=727s

于 2018-11-14T17:57:45.527 回答
0

我认为您在这里需要的是flatMap嵌入图像列表到一级列表中,并且您将正确地拥有两种ViewHolder不同类型,一种用于标题,一种用于图像。不明白为什么你ViewHolder的 s 是静态的。

于 2018-11-14T15:15:46.363 回答
0

notifyDatasetChanged()设置适配器后忘记调用。

        uranAdapter = new UranAdapter(exhibitList, context); // changes
        recyclerView.setAdapter(uranAdapter);
        uranAdapter.notifyDatasetChanged();
于 2018-11-14T17:02:54.070 回答
0

你为什么不使用两个 RecyclerViews,一个在另一个里面?

一个 RecyclerView 将具有标题和一个子 RecyclerView。第二个 RecyclerView(子 RecyclerView)将只有图像。

检查这篇文章:Recyclerview inside Recyclerview ,获取父适配器内子行的点击位置

于 2018-11-22T23:13:41.553 回答