アイテムの数を制限するにはどうすればよいですか表示 RecyclerViewで?
getChildCount
をオーバーライドする場合は、挿入する量を制限できますが、そのため、その番号のみが挿入されて停止します。挿入/スクロールを続けたいが、displayX個のアイテムのみ。
(注:各アイテムの高さは異なる場合があるため、制限はハードコードされた値ではなく数量に基づいていることが重要です。)
Recyclerviewのアダプタークラス内。
private final int limit = 10;
@Override
public int getItemCount() {
if(ad_list.size() > limit){
return limit;
}
else
{
return ad_list.size();
}
}
単にgetCount()
メソッドをオーバーライドして、アダプターのデータ配列が「DESIRED_MAX」より優れているかどうかをテストし、「DESIRED_MAX」を返すか、データ配列の長さまたはサイズ(配列/ ArrayList)を返すだけです。
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;
}
挿入/スクロールを続けて、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);
}
}
お役に立てれば