TabLayout横向滑动,DrawerLayout侧滑,PullToRefreshListView上拉刷新下拉加载联用

Activity

public class MainActivity extends AppCompatActivity {
   ViewPager vp_ma; //ViewPager
    LbUtils Lu;//数据请求的包
    LbBean lb; //LbBean包
    LbApdata lbApdata; //轮播图的适配器
    List<ImageView> list; //用于存放轮播图的图片额集合
    List<LbBean.NewslistBean> list1; //轮播图的bena包
    private List<ImageView> imagesList;  //用于存放小圆点的集合
    LinearLayout  linearLayout;  //小园点的布局控件
    Button bt_ma; //Button按钮用于实现跳转
    //handler机制
        //用于实现无限轮播
            private Handler handler = new Handler(){
                public void handleMessage(Message msg) {
                    //获取当前条目
                    int index = vp_ma.getCurrentItem();
                    //向右轮播
                    vp_ma.setCurrentItem(index+=1);
                    //间隔2秒
                    handler.sendEmptyMessageDelayed(1,1000);//轮播图轮播的速度
                };
            };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找控件
        vp_ma = (ViewPager) findViewById(R.id.vp_ma);
        linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
        bt_ma = (Button) findViewById(R.id.bt_ma);
        getBeanByGson();
        //viewPager页面改变的监听事件  小圆点的监听
        vp_ma.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            }
            @Override
            public void onPageSelected(int position) {
                //如果选中了这一页,,,当前小圆点红色,,,否则绿色
                for (int i = 0;i<imagesList.size();i++){
                    if (i== position%imagesList.size()){
                        imagesList.get(i).setImageResource(R.drawable.doc_select);
                    }else {
                        imagesList.get(i).setImageResource(R.drawable.doc_select_no);
                    }
                }
            }
            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });
        //给Button一个点击事件  用于跳转
        bt_ma.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this,Activity.class);
                startActivity(intent);
            }
        });
    }
    //轮播图的解析
    public void getBeanByGson() {
        // 使用该方法得到了一个 Json的字符输入流
        new AsyncTask<String, String, String>() {
            @Override
            protected String doInBackground(String... strings) {
                String reader = LbUtils.getNetDataStr();
                return reader;
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                // 使用Gson把该字符输入流转换成JavaBean
                Gson gson = new Gson();
                lb = gson.fromJson(s, LbBean.class);
                list = new ArrayList<ImageView>();
                list1 = new ArrayList<>();
                list1.addAll(lb.getNewslist());
                for (int i = 0; i < list1.size(); i++) {
                    ImageView imageView = new ImageView(MainActivity.this);
                    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                    ImageLoader.getInstance().displayImage(list1.get(i).getPicUrl(), imageView);
                    list.add(imageView);
                }
                initDoc();
                lbApdata = new LbApdata(list);
                vp_ma.setAdapter(lbApdata);
                handler.sendEmptyMessageDelayed(1, 1000);//轮播图轮播的速度
            }
        }.execute();
    }
    private void initDoc() {
        //首先需要一个集合记录这些小圆点的图片,,,,当页面切换的时候,可以从集合中取出imageView进行显示图片的设置
        imagesList = new ArrayList<>();
        linearLayout.removeAllViews();//清空/移除所有的view
        for (int i = 0;i<list.size();i++){
            ImageView imageView = new ImageView(MainActivity.this);
            if (i==0){
 //显示第一页,,,红的
                imageView.setImageResource(R.drawable.doc_select);
            }else {
 //绿的
                imageView.setImageResource(R.drawable.doc_select_no);
            }
            //添加到集合
            imagesList.add(imageView);
            //加入到线性布局中显示
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
            params.setMargins(5,0,5,0);//这是小圆点间距
            linearLayout.addView(imageView,params);//把小圆点存放到布局中
        }


    }

}
Activity布局
<RelativeLayout x
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
了解了你的问题,以下是一个 Kotlin 实现的横向滑动更多的示例代码,使用的是 SmartRefreshLayout 库中的 SmartRefreshHorizontal 组件: 在布局文件中添 SmartRefreshHorizontal 组件: ```xml <com.scwang.smartrefresh.layout.SmartRefreshHorizontal android:id="@+id/refreshLayout" android:layout_width="match_parent" android:layout_height="wrap_content"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="wrap_content" /> </com.scwang.smartrefresh.layout.SmartRefreshHorizontal> ``` 在 Kotlin 中设置 SmartRefreshHorizontal 组件的相关属性和监听器: ```kotlin val refreshLayout = findViewById<SmartRefreshHorizontal>(R.id.refreshLayout) val recyclerView = findViewById<RecyclerView>(R.id.recyclerView) // 设置 Adapter 和 LayoutManager val adapter = MyAdapter() val layoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false) recyclerView.adapter = adapter recyclerView.layoutManager = layoutManager // 监听刷新更多事件 refreshLayout.setOnRefreshListener { // 刷新数据 adapter.refreshData() // 结束刷新 refreshLayout.finishRefresh() } refreshLayout.setOnLoadMoreListener { // 更多数据 adapter.loadMoreData() // 结束更多 refreshLayout.finishLoadMore() } ``` 其中,`MyAdapter` 是你自己实现的 RecyclerView Adapter,根据需要实现其中的 `refreshData()` 和 `loadMoreData()` 方法来进行数据刷新更多的操作。 希望这个示例代码可以帮到你。如果还有问题或需要更多帮助,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值