PullToRefresh换内容

本文介绍了一个具体的Android应用程序开发案例,包括使用DrawerLayout实现侧滑菜单功能、TabLayout实现导航栏横向滚动效果、PullToRefreshListView实现上拉刷新下拉加载功能等。通过实例展示了如何集成各种UI组件并进行数据加载及适配器定制。

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

package com.example.yuekaomoni01;


import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;


import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;


import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;


public class Main2Activity extends AppCompatActivity {


    private RelativeLayout rel;
    private DrawerLayout drawerLayout;
    private ListView listView1;
    private List<String> datas;


    private TabLayout tabLayout;
    String[] tabs =  {"推荐","热点","体育","娱乐","社会","汽车","教育","财经","科技","游戏"};
    private ViewPager vp;
    private FragmentManager fm;


    List<Fragont_bean.DataBean> arr = new ArrayList();
    private Adapter adapter1;
    private ListView lv;
    private PullToRefreshListView pull;


    int i = 0;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        //侧拉栏
        rel = (RelativeLayout) findViewById(R.id.relayout);
        //查找组件
        drawerLayout = (DrawerLayout) findViewById(R.id.drlayout);
        listView1 = (ListView) findViewById(R.id.lv);
        //构造数据
        datas = new ArrayList<String>();
        for (int i = 0; i < 10; i++) {
            datas.add("侧拉菜单" + i);
        }
        //设置数组适配器
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, datas);
        listView1.setAdapter(adapter);


        listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //关闭侧拉菜单
                drawerLayout.closeDrawer(rel);
                //打开侧拉菜单
                //drawerLayout.openDrawer(rel);


                //设置数据
                ContentFragment01 contentFragment01 = new ContentFragment01();
                Bundle bundle = new Bundle();
                bundle.putString("value", datas.get(position));
                contentFragment01.setArguments(bundle);
                getSupportFragmentManager().beginTransaction().replace(R.id.lilayout, contentFragment01).commit();
            }
        });
        //导航栏横向滚动
        tabLayout = (TabLayout) findViewById(R.id.tablayout);
        for(int i=0;i<tabs.length;i++){
            tabLayout.addTab(tabLayout.newTab().setText(tabs[i]));
        }
        //吐司
        tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                Toast.makeText(Main2Activity.this,tab.getText(),Toast.LENGTH_SHORT).show();
                if(tab.getText().equals("推荐")){
                    //请求推荐的网络数据


                }else if(tab.getText().equals("热点")){
                    //请求热点的网络数据
                }else{


                }
            }
            @Override
            public void onTabUnselected(TabLayout.Tab tab) {


            }
            @Override
            public void onTabReselected(TabLayout.Tab tab) {


            }
        });
        //解析上拉刷新下拉加载
        pull = (PullToRefreshListView) findViewById(R.id.pull);
        pull.setMode(PullToRefreshBase.Mode.BOTH);
        lv = pull.getRefreshableView();
        adapter1 = new Adapter();
        lv.setAdapter(adapter1);


        new MyAsyncTask().execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0");
        pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {


            @Override
            //上拉
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                arr.clear();
                i = 0;
                new MyAsyncTask().execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=" + i);
            }


            @Override
            //下拉加载20条
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                i = i + 20;
                new MyAsyncTask().execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=" + i);


            }
        });


    }
    class MyAsyncTask extends AsyncTask<String, Void, String> {


        @Override
        protected String doInBackground(String... params) {
            String string = "";
            StringBuffer stringBuffer = new StringBuffer();
            try {
                URL url = new URL(params[0]);
                URLConnection urlConnection = url.openConnection();
                InputStream inputStream = urlConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                while ((string = bufferedReader.readLine()) != null) {
                    stringBuffer.append(string);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return stringBuffer.toString();
        }


        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Fragont_bean fragone_bean = new Gson().fromJson(s, Fragont_bean.class);
            List<Fragont_bean.DataBean> data = fragone_bean.getData();
            arr.addAll(data);
            adapter1.notifyDataSetChanged();
            pull.onRefreshComplete();
        }
    }


    class Adapter extends BaseAdapter {


        @Override
        public int getCount() {
            return arr.size();
        }


        @Override
        public Object getItem(int position) {
            return arr.get(position);
        }


        @Override
        public long getItemId(int position) {
            return position;
        }


        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            Sj sj = new Sj();
            Fragont_bean.DataBean dataBean = arr.get(position);
            if (convertView==null){
                convertView = View.inflate(Main2Activity.this,R.layout.pulllist,null);
                sj.image= (ImageView) convertView.findViewById(R.id.iv);
                sj.tv= (TextView) convertView.findViewById(R.id.tv);
                convertView.setTag(sj);
            }else {
                sj =(Sj) convertView.getTag();
            }
            sj.tv.setText(dataBean.getSUBTITLE());
            DisplayImageOptions options = new DisplayImageOptions.Builder()
                    .cacheInMemory(true)
                    .cacheOnDisk(true)
                    .showImageOnLoading(R.drawable.zhengzaijiazai)
                    .showImageForEmptyUri(R.drawable.zhengzaijiazai)
                    .showImageOnFail(R.drawable.zhengzaijiazai)
                    .bitmapConfig(Bitmap.Config.RGB_565)
                    .build();
            ImageLoader.getInstance().displayImage((String) dataBean.getIMAGEURL(),sj.image,options);


            return convertView;
        }
    }
    class Sj{
        ImageView image;
        TextView tv;
    }
}



内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值