0

我想实现可滚动的按钮列表。屏幕上的按钮分页 - Android

SS

如屏幕截图所示的上方,有在屏幕上显示三个按钮。我正在尝试创建一个按钮列表,用户可以一次滚动3个按钮。

我试图2种方式:

1-查看寻呼机:我创建1个片段的每个3个按键。

滚动工作完美,因为我想要的,但是当我需要添加新的按钮,这是一个真正的开销工作。

2- RecyclerView:这是行之有效的,但一次没有滚动3。

所以我想在屏幕上只显示3个项目。当用户滚动时,它将滚动到接下来的3个项目。

是否有可能使用RecyclerView(这更容易添加到它)做到这一点?

回答

1

的一个解决方案,可以使用适配器,其显示每第3组的元素,然后使用PageSnapHelper来获得寻呼效果:

适配器:

public class ButtonsRecyclerAdapter extends RecyclerView.Adapter<ButtonsRecyclerAdapter.ButtonsViewHolder> { 

    private List<Button> mButtons = new ArrayList<>(); 

    @Override 
    public ButtonsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_buttons, null); 
     return new ButtonsViewHolder(layoutView); 
    } 

    @Override 
    public void onBindViewHolder(ButtonsViewHolder holder, int position) { 
     int startPosition = getItemCount() * position; 
     int endPosition = startPosition + 3; 

     for (int i = startPosition; i < endPosition || i < mButtons.size(); i++) { 
      Button neededButton = holder.getButton(i - position); 
      neededButton.setVisibility(View.VISIBLE); 
      //Do whant you want to do with it 
     } 
    } 

    @Override 
    public int getItemCount() { 
     return null != mButtons ? ((int) Math.ceil((double) mButtons.size()/3)) : 0; 
    } 

    public class ButtonsViewHolder extends RecyclerView.ViewHolder { 

     Button mButtonFirst; 
     Button mButtonSecond; 
     Button mButtonThird; 

     public ButtonsViewHolder(View itemView) { 
      super(itemView); 
      mButtonFirst = (Button) itemView.findViewById(R.id.button_first); 
      mButtonSecond = (Button) itemView.findViewById(R.id.button_second); 
      mButtonThird = (Button) itemView.findViewById(R.id.button_third); 
     } 

     Button getButton(int index) { 
      switch (index) { 
       case 0: 
        return mButtonFirst; 
       case 1: 
        return mButtonSecond; 
       case 2: 
        return mButtonThird; 
      } 
      return null; 
     } 
    } 
} 

列表项布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:gravity="center" 
       android:orientation="horizontal"> 

    <Button 
     android:id="@+id/button_first" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:visibility="invisible"/> 

    <Button 
     android:id="@+id/button_second" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:visibility="invisible"/> 

    <Button 
     android:id="@+id/button_third" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:visibility="invisible"/> 
</LinearLayout> 
+0

是否有可能让观者只持有1个按钮? – MBH

+0

我找不到这样做的方法 –

+0

好吧,非常感谢你的解决方案,我现在正在申请,我会告诉我什么时候完成 – MBH