【问题标题】:Made a custom Adapter for my RecyclerView with a List使用列表为我的 RecyclerView 制作了一个自定义适配器
【发布时间】:2019-11-14 22:54:13
【问题描述】:

我想为我的RecyclerView 创建一个自定义Adapter,因为我需要在内部使用一个自定义方法,稍后当我的演示者准备好时,我将初始化我的List

    public void setList(List<Object> data){
        this.data = data;
    }

这是我没有实现的适配器的非自定义接口。

final class AdapterReviews extends RecyclerView.Adapter<AdapterReviews.ReviewViewHolder> {}

问题是我的自定义Adapter的界面应该如何?

【问题讨论】:

  • 究竟是什么问题
  • 如果你想拥有自己的适配器,请查看developer.android.com/guide/topics/ui/layout/recyclerview
  • 我需要自定义 RecyclerView.Adapter 接口,我的适配器会扩展它...
  • 只用一个方法声明一个接口,然后在你的适配器中实现它

标签: java android android-recyclerview adapter mvp


【解决方案1】:
  **public class GetHolidaylistAdapter extends RecyclerView.Adapter<GetHolidaylistAdapter.ViewHolder> {
    ArrayList<HashMap<String, String>> arrayList;
    public GetHolidaylistAdapter(ArrayList<HashMap<String, String>> arrayList) {
        this.arrayList = arrayList;
    }
    public class ViewHolder extends RecyclerView.ViewHolder {
        TextView holiyDay_Date_Tv, holidayName_tv, holidayType_tv, day_tv;
        public ViewHolder(View itemView) {
            super(itemView);
            holiyDay_Date_Tv = (TextView) itemView.findViewById(R.id.holiyDay_Date_Tv);
            holidayName_tv = (TextView) itemView.findViewById(R.id.holidayName_tv);
            holidayType_tv = (TextView) itemView.findViewById(R.id.holidayType_tv);
        }
    }
    @Override
    public int getItemCount() {
        return arrayList.size();
    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        GetHolidaylistAdapter.ViewHolder viewHolder = null;
        Log.d(TAG, "Rv_Child_Active.." + viewType);

        viewHolder = new GetHolidaylistAdapter.ViewHolder(LayoutInflater.from(parent.getContext()).
        inflate(R.layout.holiday_child_rv, parent, false));

        return viewHolder;
    }
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        String date = arrayList.get(position).get(TAG_HOLIDAYDATE);
        holder.holidayName_tv.setText(arrayList.get(position).get(TAG_HOLIDAYName));
        holder.holiyDay_Date_Tv.setText(arrayList.get(position).get(TAG_HOLIDAYDATE));
        holder.holidayType_tv.setText(arrayList.get(position).get(TAG_HOLIDAYtype));
    ***}
}
recycle_view=(RecyclerView)findViewById(R.id.recycle_view);
    linearLayoutManager=new LinearLayoutManager(this);
    recycle_view.setLayoutManager(linearLayoutManager);
    adapter=new CustomAdapter(modelRecyclerArrayList);
    recycle_view.setAdapter(adapter);
RecyclerView recycle_view;
LinearLayoutManager linearLayoutManager;
 CustomAdapter adapter;
ArrayList<ModelRecycler> modelRecyclerArrayList = new ArrayList<>();*

【讨论】:

  • 请解释代码的作用以及它如何解决问题。只有没有解释的代码是一个答案不是一个好的答案。
【解决方案2】:

一个基本的 RecyclerView CustomAdapter 看起来像这样

public class CustomAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private final Context context;
    ArrayList<String> list = new ArrayList<>();

    public CustomAdapter(Context context, ArrayList<String> list) { // you can pass other parameters in constructor
        this.context = context;
        this.list = list;
    }

    private class CustomAdapterItemView extends RecyclerView.ViewHolder {
        final TextView textView;

        CustomAdapterItemView(final View itemView) {
            super(itemView);
            textView = (TextView) itemView;
        }

        void bind(int position) {
            textView.setText("");
        }
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        return new CustomAdapterItemView(LayoutInflater.from(context).inflate(R.layout.item_color, parent, false));
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        ((CustomAdapterItemView) holder).bind(position);
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    // Add your other methods here
}

【讨论】:

  • 这是一个基本的例子,让我知道你想如何根据你的要求定制它,我会为你做的。
  • 它对你有用吗?如果您在其中遇到任何问题,请告诉我。
【解决方案3】:

您可以查看this。这里有完整的 RecyclerView 示例。全部由 Google 制作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-12
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多