代码之家  ›  专栏  ›  技术社区  ›  Nabin Dhakal

在重新循环视图中设置来自大数据的有限数据

  •  0
  • Nabin Dhakal  · 技术社区  · 8 年前

    我只需要在RecyclerView中设置四个来自API的数据。来自API的数据是动态的,如果有4个以上的数据,那么最后一个数据应该隐藏自己,最近的数据应该出现在顶部。我已经研究过了,但找不到合适的解决方案。

    我的适配器

    public class EventRecyclerAdapter extends RecyclerView.Adapter<EventRecyclerAdapter.MyViewHolder> {
    Context context;
    private ArrayList<String> start;
    private AdapterView.OnItemClickListener listener;
    private ArrayList<String> desc;
    private ArrayList<EventData>data;
    
    
    public EventRecyclerAdapter(Context context, ArrayList<EventData> data) {
        this.context = context;
        this.data = data;
    }
    
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.content_events, parent, false);
    
        return new EventRecyclerAdapter.MyViewHolder(itemView);
    
    
    }
    
    @Override
    public void onBindViewHolder(EventRecyclerAdapter.MyViewHolder holder, int position) {
        holder.start.setText(data.get(position).getStartDate());
    
        holder.des.setText(Html.fromHtml(data.get(position).getName()));
    }
    
    
    @Override
    public int getItemCount() {
        return data.size();
    }
    
    
    public class MyViewHolder extends RecyclerView.ViewHolder {
        private TextView start, des, viewall,name;
    
        private CardView cardView;
    
    
        public MyViewHolder(View itemView) {
            super(itemView);
    
            start = (TextView) itemView.findViewById(R.id.startdate);
    
            des = (TextView) itemView.findViewById(R.id.description);
    
            viewall = (TextView) itemView.findViewById(R.id.viewall);
    
    
    
    
        }
    
    }
    
    }
    

    我将数据设置如下

      private void initEventRecycler() {
        RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
        eventR.setLayoutManager(mLayoutManager);
        eventR.setItemAnimator(new DefaultItemAnimator());
        eventR.setNestedScrollingEnabled(false);
        eventRecyclerAdapter = new EventRecyclerAdapter(MainActivity.this, events);
        eventR.setAdapter(eventRecyclerAdapter);
    
    }
    
    2 回复  |  直到 8 年前
        1
  •  3
  •   Nabin Dhakal    8 年前

      @Override
    public int getItemCount() {
            if (data!= null && data.size() < 5) {
                return data.size();
            } else {
                return 5;
            }
    
     }
    

        2
  •  0
  •   Khaled Lela    8 年前
    EventData[] mData = new EventData[4];
    int writeIndex = 0;
    
    public void add(Object o) {
      ring[writeIndex % ring.length] = o;
      writeIndex++;
    }
    
    // Return the size of your dataset (invoked by the layout manager)
    @Override
    public int getItemCount() {
        return mData.lenght;
    }