PullToRefreshScrollView上下拉刷新与轮播图使用时,解决轮播图中小圆点的增删

在Android应用中,本文详细介绍了如何在使用PullToRefreshScrollView实现上下拉刷新功能的同时,处理轮播图中小圆点的动态增删问题。通过示例代码展示了如何设置数据、刷新加载、以及处理轮播图的切换和小圆点状态更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


public class LoginActivity extends AppCompatActivity {
    private PullToRefreshScrollView pst;

    private int pathtype=10;
    private String path="http://api.tianapi.com/social/?key=35f63c08e9b14e43c20eb253ca096dd2&num="+pathtype;
    private int types=1;
    private Mylistview mylistview;
    private ArrayList<ResuleDatas.NewslistBean> newdatas;
    private MyAdaper adaper;
    private List<ResuleDatas.NewslistBean> newslist;
    private LinearLayout imageout;
    private List<String> lists=new ArrayList<String>();
    private List<ImageView> images=new ArrayList<>();
    private ViewPager pager0;
    private Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            //接收消息
            int getmes=pager0.getCurrentItem();
            getmes++;
            //再次添加
            pager0.setCurrentItem(getmes);
            //调用小圆点
            setyuandian(getmes%images.size());
            //再次发送消息
            handler.sendEmptyMessageDelayed(1,1000);

        }
    };



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        pst=findViewById(R.id.pts);
        mylistview=findViewById(R.id.myviews);
        newdatas =new ArrayList<ResuleDatas.NewslistBean>();
        imageout=findViewById(R.id.imageout);
        pager0=findViewById(R.id.page0);


        //初始化数据
        setDatas();
        //刷新加载数据
        shuaxin();
    }



    private void setDatas() {
        MyTaas myTaas=new MyTaas();
        myTaas.execute(path);
    }
    class MyTaas extends AsyncTask<String,Integer,String>{

        @Override
        protected String doInBackground(String... strings) {

            HttpClient httpClient=new DefaultHttpClient();
            HttpGet httpGet=new HttpGet(strings[0]);
            try {
                HttpResponse response = httpClient.execute(httpGet);
                if(response.getStatusLine().getStatusCode()==200){
                    HttpEntity entity = response.getEntity();
                    String s = EntityUtils.toString(entity);
                    return s;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);


            Gson gson=new Gson();
            ResuleDatas resuleDatas = gson.fromJson(s, ResuleDatas.class);
            newslist = resuleDatas.getNewslist();

            //刷新后只保留第一页数据
            if(types==1){
                newdatas.clear();
            }
            newdatas.addAll(newslist);
            setadaper();

            //关闭头尾布局
            pst.onRefreshComplete();

            //得到网络上的图片
            getimages(newslist);


        }
    }

    private void getimages(List<ResuleDatas.NewslistBean> newslist) {
        //添加之前先清除
        lists.clear();
        lists.add(newslist.get(0).getPicUrl());
        lists.add(newslist.get(1).getPicUrl());
        lists.add(newslist.get(2).getPicUrl());
        lists.add(newslist.get(3).getPicUrl());
        lists.add(newslist.get(4).getPicUrl());

        //添加适配器
        PagerAdapter pagerAdapter=new PageAdaper(this,lists);
        pager0.setAdapter(pagerAdapter);

        //handler发送消息
        handler.sendEmptyMessageDelayed(1,1000);
        pager0.setCurrentItem(lists.size()*100000);
        //把添加的视图都清除
        imageout.removeAllViews();
        images.clear();
        //添加小圆点,让小圆点的数量与请求图片的数量一致
        for (int i = 0; i <lists.size() ; i++) {
            ImageView imageView=new ImageView(LoginActivity.this);
            if(i==0){
                imageView.setImageResource(R.drawable.point_selected);
            }else{
                imageView.setImageResource(R.drawable.point_mormal);
            }
            //添加视图
            imageout.addView(imageView);
            images.add(imageView);
        }
    }

    //小圆点
    private void setyuandian(int index) {
        for (int i = 0; i <lists.size() ; i++) {
            if(i==index){
                images.get(i).setImageResource(R.drawable.point_selected);
            }else{
                images.get(i).setImageResource(R.drawable.point_mormal);
            }
        }
    }

    private void setadaper() {
        if(adaper==null){
            adaper =new MyAdaper(LoginActivity.this,newdatas);
            mylistview.setAdapter(adaper);
        }else{
            adaper.notifyDataSetChanged();
        }
    }

    private void shuaxin() {
        pst.setMode(PullToRefreshBase.Mode.BOTH);
        pst.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {
                types=1;
                pathtype=10;
                path="http://api.tianapi.com/social/?key=35f63c08e9b14e43c20eb253ca096dd2&num="+pathtype;
                setDatas();
                //刷新时候关闭handler
                handler.removeMessages(1);
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) {
                types=2;
                pathtype++;
                path="http://api.tianapi.com/social/?key=35f63c08e9b14e43c20eb253ca096dd2&num="+pathtype;
                setDatas();
                //加载时候关闭handler
                handler.removeMessages(1);
            }
        });
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值