写点什么

Android 使用 ViewPager 实现图片轮播系列之四:手动滑动 + 左右箭头 + 删除数据

用户头像
Android架构
关注
发布于: 2021 年 11 月 07 日

android:layout_width="wrap_content"


android:layout_height="wrap_content"


android:layout_alignParentRight="true"


android:text="删除"/>


</RelativeLayout>


3、VPTest4Activity.java


======================


/**


  • Android 使用 ViewPager 实现图片轮播系列之四:手动滑动 + 左右箭头 + 删除数据


*/


public class VPTest4Activity extends AppCompatActivity {


@BindView(R.id.viewPager)


ViewPager viewPager;


@BindView(R.id.ivPre)


ImageView ivPre;


@BindView(R.id.ivNext)


ImageView ivNext;


@BindView(R.id.btnDelete)


Button btnDelete;


// private int[] imagePaths = {


// R.mipmap.scenery1, R.mipmap.scenery2, R.mipmap.scenery3, R.mipmap.scenery4,


// R.mipmap.scenery5


// };


private int[] imagePaths = {


R.mipmap.scenery1, R.mipmap.scenery2, R.mipmap.scenery3


};


// private int[] imagePaths = {


// R.mipmap.scenery1, R.mipmap.scenery2


// };


// private int[] imagePaths = {


// R.mipmap.scenery1


// };


ArrayList<ImageView> imageViewList;


private MyPagerAdapter myPagerAdapter;


private int currentPosition;


@Override


protected void onCreate(Bundle savedInstanceState) {


super.onCreate(savedInstanceState);


setContentView(R.layout.activity_vptest4);


Butter


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


Knife.bind(this);


initData();


}


@OnClick({R.id.ivPre, R.id.ivNext, R.id.btnDelete})


public void onViewClicked(View view) {


switch (view.getId()) {


case R.id.ivPre:


currentPosition -= 1;


viewPager.setCurrentItem(currentPosition);


break;


case R.id.ivNext:


currentPosition += 1;


viewPager.setCurrentItem(currentPosition);


break;


case R.id.btnDelete:


deleteData();


break;


}


}


private void deleteData() {


// 只有一条数据 删除数据后直接 finish 当前界面


if (imageViewList.size() == 1) {


// LogUtils.e("currentPosition: " + currentPosition);


imageViewList.remove(currentPosition);


finish();


} else {// 数据不止一条


// 当前显示的是最后一条数据,删除当前数据后展示前一条数据


if (currentPosition == imageViewList.size() - 1) {


imageViewList.remove(currentPosition);


myPagerAdapter.notifyDataSetChanged();


} else {// 当前显示的不是最后一条数据,删除当前数据后展示后一条数据


imageViewList.remove(currentPosition);


myPagerAdapter.notifyDataSetChanged();


if (imageViewList.size() == 1) {


ivNext.setVisibility(View.GONE);


}


}


}


}


private void initData() {


imageViewList = new ArrayList<>();


viewPager.setCurrentItem(0);


setDataToViewPager();


}


/**


  • 把数据设置到 ViewPager 上


*/


private void setDataToViewPager() {


// 将图片放到集合中


imageViewList = new ArrayList<>();


for (int imagePath : imagePaths) {


ImageView imageView = new ImageView(this);


imageView.setImageResource(imagePath);


// Glide.with(this).load(imagePath).into(imageView);


imageView.setScaleType(ImageView.ScaleType.FIT_XY);


imageViewList.add(imageView);


}


// 进行适配


myPagerAdapter = new MyPagerAdapter();


if (viewPager != null) {


viewPager.setAdapter(myPagerAdapter);


}


// 第一次进入 不显示前置箭头


ivPre.setVisibility(View.GONE);


// 列表数据只有一条


if (imageViewList.size() == 1) {


// 不显示后一条箭头


ivNext.setVisibility(View.GONE);


}


viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {


@Override


public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {


}


@Override


public void onPageSelected(int position) {


currentPosition = position;


// 第一个位置 不显示前置箭头


ivPre.setVisibility(position == 0 ? View.GONE : View.VISIBLE);


// 最后一个位置 不显示后置箭头


ivNext.setVisibility(position == imageViewList.size() - 1 ? View.GONE : View.VISIBLE);


}


@Override


public void onPageScrollStateChanged(int state) {


}


});


}


/**


  • 自定义适配器


*/


private class MyPagerAdapter extends PagerAdapter {


@Override


public int getCount() {


return imageViewList.size();


}


@Override


public Object instantiateItem(ViewGroup container, final int position) {


ImageView imageView = imageViewList.get(position);


ViewParent viewParent = imageView.getParent();


if (viewParent != null) {


ViewGroup viewGroup = (ViewGroup) viewParent;


viewGroup.removeView(imageView);


}


container.addView(imageView);


return imageView;


}


@Override


public void destroyItem(View view, int num, Object object) {


}


@Override

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Android使用ViewPager实现图片轮播系列之四:手动滑动 + 左右箭头 + 删除数据