web-dev-qa-db-ja.com

RecyclerViewのアイテム数を制限する方法は?

アイテムの数を制限するにはどうすればよいですか表示 RecyclerViewで?

getChildCountをオーバーライドする場合は、挿入する量を制限できますが、そのため、その番号のみが挿入されて停止します。挿入/スクロールを続けたいが、displayX個のアイテムのみ。

(注:各アイテムの高さは異なる場合があるため、制限はハードコードされた値ではなく数量に基づいていることが重要です。)

5
Elliptica

Recyclerviewのアダプタークラス内。

private final int limit = 10;


 @Override
public int getItemCount() {
    if(ad_list.size() > limit){
        return limit;
    }
    else
    {
        return ad_list.size();
    }

}
9
jhashane

単にgetCount()メソッドをオーバーライドして、アダプターのデータ配列が「DESIRED_MAX」より優れているかどうかをテストし、「DESIRED_MAX」を返すか、データ配列の長さまたはサイズ(配列/ ArrayList)を返すだけです。

2

1つの解決策は、各子の幅をプログラムで設定することです。

@Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.MY_ITEM_TO_INFALTE, parent, false);

        itemView.getLayoutParams().width = (int) (getScreenWidth() / NUMBERS_OF_ITEM_TO_DISPLAY); /// THIS LINE WILL DIVIDE OUR VIEW INTO NUMBERS OF PARTS

        return new MyCreationItemAdapter.MyViewHolder(itemView);
    }

    public int getScreenWidth() {

        WindowManager wm = (WindowManager) activity.getSystemService(Context.WINDOW_SERVICE);
        Display display = wm.getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);

        return size.x;
    }
1
Ranjith KP

挿入/スクロールを続けて、X個のアイテムのみを表示したい場合、解決策があります:setVisibilityからXアイテムのVISIBLE、その他はGONEです。

public static final class ViewHolder extends RecyclerView.ViewHolder {
    public ViewHolder(View view) {
        super(view);
        handleShowView(view);
    }

    private void handleShowView(View view) {
        if (getAdapterPosition() > X - 1) {
            view.setVisibility(View.GONE);
            return;
        }
        view.setVisibility(View.VISIBLE);
    }
}

お役に立てれば

1
GianhTran