用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - android代码库

上拉刷新,下拉加载,webView

2017-02-28 作者: xjh举报

[android]代码库

main




public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{
    private XListView mXListView;
    private List<Bean.ResultBean.ListBean> mListBean = new ArrayList<>();
    private String path;
    private int i = 1;
    Handler mHandler = new Handler(){
        private MyBaseAdapter adapter;
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            //接受传过来的数据
            String s = (String) msg.obj;
            //开始解析
            Gson mGson = new Gson();
            Bean bean = mGson.fromJson(s, Bean.class);
            int tag = msg.arg1;
            switch (tag){
                //下拉刷新
                case 1:
                    mListBean.clear();
                    mListBean.addAll(bean.getResult().getList());
                    adapter.notifyDataSetChanged();
                    mXListView.stopRefresh();
                    break;
                //上拉加载
                case 2:
                    mListBean.addAll(bean.getResult().getList());
                    adapter.notifyDataSetChanged();
                    mXListView.stopLoadMore();
                    break;
                //第一次进入界面调用的数据
                case 3:
                    mListBean.addAll(bean.getResult().getList());
                    adapter = new MyBaseAdapter(MainActivity.this,mListBean);
                    mXListView.setAdapter(adapter);
                    break;
            }
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件的方法
        initView();
        getData(3);
        //设置xlistview的点击监听
        mXListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Intent it = new Intent(MainActivity.this,SecondActivity.class);
                it.putExtra("String",mListBean.get(i).getUrl());
                startActivity(it);
            }
        });
    }

    private void getData(final int tag) {
        //判断tag
        if(tag == 1){
            //下拉刷新
            path = "http://v.juhe.cn/weixin/query?pno="+1+"&ps=15&dtype=&key=0863c5f38bfa7a84bcceb6b629f91a35";
        }else if(tag == 2){
            path = "http://v.juhe.cn/weixin/query?pno="+(i+=1)+"&ps=15&dtype=&key=0863c5f38bfa7a84bcceb6b629f91a35";
        }else if(tag == 3){
            path = "http://v.juhe.cn/weixin/query?pno="+1+"&ps=15&dtype=&key=0863c5f38bfa7a84bcceb6b629f91a35";
        }
        //开始请求数据
        HttpUtils mHttpUtils = new HttpUtils();
        mHttpUtils.send(HttpRequest.HttpMethod.GET, path, new RequestCallBack<String>() {
            //请求成功的返回
            @Override
            public void onSuccess(ResponseInfo<String> responseInfo) {
                String mString = responseInfo.result;
                //把返回的数据传给message
                Message mMessage = Message.obtain();
                mMessage.obj = mString;
                mMessage.arg1 = tag;
                mHandler.sendMessage(mMessage);
            }

            @Override
            public void onFailure(HttpException e, String s) {

            }
        });
    }

    private void initView() {
        mXListView = (XListView) findViewById(R.id.xlistview);
        //创建xlistview的监听
        mXListView.setXListViewListener(this);
        //设置加载更多
        mXListView.setPullLoadEnable(true);
    }
    //上拉刷新
    @Override
    public void onRefresh() {
        getData(1);
    }
    //下拉加载
    @Override
    public void onLoadMore() {
        getData(2);
    }
}






////////////////适配器
public class MyBaseAdapter extends BaseAdapter{
    private Context mContext;
    private List<Bean.ResultBean.ListBean> list;
    public MyBaseAdapter(Context mContext, List<Bean.ResultBean.ListBean> list) {
        this.mContext = mContext;
        this.list = list;
    }

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

    @Override
    public Object getItem(int i) {
        return list.get(i);
    }

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

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        ViewHolder v;
        if(view == null){
            v = new ViewHolder();
            view = View.inflate(mContext, R.layout.item,null);
            v.imageView = (ImageView) view.findViewById(R.id.item_imageView);
            v.title = (TextView) view.findViewById(R.id.item_title);
            v.name = (TextView) view.findViewById(R.id.item_name);
            view.setTag(v);
        }else{
            v = (ViewHolder) view.getTag();
            }
        new BitmapUtils(mContext).display(v.imageView,list.get(i).getFirstImg());
        v.name.setText(list.get(i).getTitle());
        v.title.setText(list.get(i).getSource());
        return view;
    }
    static class ViewHolder{
        ImageView imageView;
        TextView title,name;
    }
}




//////////////////////////////////////////second   Xml
<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:background="#1B9A16"

        />


    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="3dip"
        android:progressDrawable="@drawable/pg"
        android:visibility="gone"

        />

    <WebView
        android:id="@+id/webview1"
        android:layout_below="@id/progressBar1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />




/////////////////////////////////////////////SecondActivity
public class SecondActivity extends AppCompatActivity {
/*    private WebView mWebView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        mWebView = (WebView) findViewById(R.id.webView);
        Intent intent = getIntent();
        String titleUrl=intent.getStringExtra("String");
        WebSettings settings = mWebView.getSettings();
        settings.setJavaScriptCanOpenWindowsAutomatically(true);
        settings.setJavaScriptEnabled(true);
        mWebView.loadUrl(titleUrl);
    }*/
    private WebView webView;
    private ProgressBar pg1;
    private String titleUrl;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_second);
        init();
        Intent intent = getIntent();
        titleUrl = intent.getStringExtra("String");
        webView.loadUrl(titleUrl);
    }

    private void init() {
        // TODO 自动生成的方法存根
        webView=(WebView) findViewById(R.id.webview1);
        pg1=(ProgressBar) findViewById(R.id.progressBar1);

        webView.setWebViewClient(new WebViewClient(){
            //覆写shouldOverrideUrlLoading实现内部显示网页
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // TODO 自动生成的方法存根
                view.loadUrl(url);
                return true;
            }
        });
        WebSettings seting=webView.getSettings();
        seting.setJavaScriptEnabled(true);//设置webview支持javascript脚本
        webView.setWebChromeClient(new WebChromeClient(){
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                // TODO 自动生成的方法存根

                if(newProgress==100){
                    pg1.setVisibility(View.GONE);//加载完网页进度条消失
                }
                else{
                    pg1.setVisibility(View.VISIBLE);//开始加载网页时显示进度条
                    pg1.setProgress(newProgress);//设置进度值
                }

            }
        });

    }


    //设置返回键动作(防止按返回键直接退出程序)
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO 自动生成的方法存根
        if(keyCode==KeyEvent.KEYCODE_BACK) {
            if(webView.canGoBack()) {//当webview不是处于第一页面时,返回上一个页面
                webView.goBack();
                return true;
            }
            else {//当webview处于第一页面时,直接退出程序
                System.exit(0);
            }


        }
        return super.onKeyDown(keyCode, event);
    }




网友评论    (发表评论)

共3 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...