Android 筆記 - ViewPager2 滑動換頁

ViewPager2 是左右滑動(或上下滑動)換頁的方法


在 new 出 Adapter 物件後呼叫 setAdapter,設定後即可使用


ViewPager2 vp = findViewById(R.id.你的ViewPager2的ID);
vp.setAdapter(new ViewPager2Adapter(this));


 Adapter 用法 - Fragment

各頁面的程式碼,如下範例

public static class ViewPager2Fragment extends Fragment {
int pos;
public ViewPager2Fragment(int position) {
pos = position;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.你的layoutXML, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
TextView tv = view.findViewById(R.id.你的LayoutXML裡的物件ID);
tv.setText("pos = " + pos); //可在這修改頁面細節
}
}
private class ViewPager2Adapter extends FragmentStateAdapter {
public ViewPager2Adapter(FragmentActivity fa) {
super(fa);
}
@Override
public Fragment createFragment(int position) {
return new ViewPager2Fragment(position);
}
@Override
public int getItemCount() {
return 頁數數值;
}
}


Adapter 用法 - RecyclerView

各頁面的程式碼,如下範例

class ViewPager2Adapter extends RecyclerView.Adapter<ViewPager2Adapter.ViewHolder> {
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView images;
public ViewHolder(@NonNull View itemView) {
super(itemView);
images = itemView.findViewById(R.id.images);
}
}

        private int[] images = { R.drawable.image1, R.drawable.image2, R.drawable.image3 };
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.你的layoutXML, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.images.setImageResource(images[position]);
}

@Override
public int getItemCount() {
return images.length;
}
}







沒有留言:

張貼留言