有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从适配器类扩展类

在我的应用程序中应该有很多彼此相似的适配器,我想知道是否有可能让接口或超类从那里继承,然后,而不是编写10个适配器,谢谢

我的适配器代码

public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.NewsViewHolder> {

    private List<News> newsList;
    private Context ctx;

    public NewsAdapter(List<News> newsList, Context ctx) {
        this.newsList = newsList;
        this.ctx = ctx;
    }

    static class NewsViewHolder extends RecyclerView.ViewHolder {
        CardView cv;
        TextView newsTitle;
        TextView newsDescription;
        ImageView newsImage;
        TextView newsDate;

        NewsViewHolder(View itemView) {
            super(itemView);
            cv = (CardView) itemView.findViewById(R.id.cvNews);
            newsTitle = (TextView) itemView.findViewById(R.id.title_news);
            newsDescription = (TextView) itemView.findViewById(R.id.description_news);
            newsDate = (TextView) itemView.findViewById(R.id.date_news);
            newsImage = (ImageView) itemView.findViewById(R.id.image_news);
        }
    }

    @Override
    public NewsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.news_item, parent,
                false);
        return new NewsViewHolder(v);
    }

    @Override
    public void onBindViewHolder(NewsViewHolder holder, int position) {
        holder.newsTitle.setText(newsList.get(position).newsTitle);
        holder.newsDescription.setText(newsList.get(position).newsDescription);
        holder.newsDate.setText(newsList.get(position).newsDate);
        Glide.with(ctx).load(Constants.SITE + newsList.get(position).newsImage)
                .into(holder.newsImage);
    }

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

    @Override
    public void onAttachedToRecyclerView(RecyclerView recyclerView) {
        super.onAttachedToRecyclerView(recyclerView);
    }

}

All should reflect like this


共 (1) 个答案

  1. # 1 楼答案

    it is possible to make the interface or superclass to inherit from there and then, instead of writing 10 adapters

    这是可能的,但当然肯定有共同之处。首先,数据集应该是同质的。例如,你的项目都应该实现一个接口,项目和适配器本身之间的契约。在你的情况下,可能是

    public interface DataItem {
         String getTitle();
         String getDescription();
         String getDate();
         String getImageUrl();
    }
    

    而不是一个private List<News> newsList;,而是一个私有的List<? extends DataItem> newsList;。正如我所说,您的所有项目都必须实现该接口,并且必须通过getter访问属性