Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 會話失效和PullToRefreshListView,pullrefreshlistview

會話失效和PullToRefreshListView,pullrefreshlistview

編輯:關於android開發

會話失效和PullToRefreshListView,pullrefreshlistview


今天碰到一個一個會話失效的問題,從網上找了個方法可以處理http://blog.csdn.net/aa7704/article/details/50611588#comments

還有list的下拉刷新和上拉加載的完成程序的例子

如下是代碼

先看下登錄保存定義保存的Cookie

package com.examle.hello.util;

import com.lidroid.xutils.util.PreferencesCookieStore;

import android.app.Application;

public class MyApplication extends Application {
    /**
     * 用PreferencesVookisStore持久化cookie到本地
     */
    public static PreferencesCookieStore presCookieStore;
    public static String jsesionid = "";// 保存sessionid

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        presCookieStore = new PreferencesCookieStore(getApplicationContext());
    }
}
package com.examle.hello.text; import java.util.List; import org.apache.http.client.CookieStore; import org.apache.http.cookie.Cookie; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONObject; import com.examle.hello.util.MyApplication; import com.lidroid.xutils.HttpUtils; import com.lidroid.xutils.exception.HttpException; import com.lidroid.xutils.http.RequestParams; import com.lidroid.xutils.http.ResponseInfo; import com.lidroid.xutils.http.callback.RequestCallBack; import com.lidroid.xutils.http.client.HttpRequest.HttpMethod; import android.os.Bundle; import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.content.SharedPreferences; import android.text.TextUtils; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; /** * 用戶的登錄界面 * @author zh * */ public class MainActivity extends Activity implements OnClickListener { private Button btn_login; private EditText userName; private EditText pwd; private String userNameString; private String pwdString; private ProgressDialog pDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); } private void initData() { // TODO Auto-generated method stub SharedPreferences sPreferences = getSharedPreferences("info", MODE_PRIVATE); this.userName.setText(sPreferences.getString("name", "")); this.pwd.setText(sPreferences.getString("password", "")); } private void initView() { // TODO Auto-generated method stub userName = (EditText) findViewById(R.id.userNameEdit); pwd = (EditText) findViewById(R.id.pwdEdit); btn_login = (Button) findViewById(R.id.loginBtn); btn_login.setOnClickListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View arg0) { // TODO Auto-generated method stub switch (arg0.getId()) { // login case R.id.loginBtn: userNameString = userName.getText().toString().trim(); pwdString = pwd.getText().toString().trim(); if (TextUtils.isEmpty(userNameString) || TextUtils.isEmpty(pwdString)) { Toast.makeText(MainActivity.this, "用戶名或密碼不能為空", Toast.LENGTH_SHORT).show(); return; } Login(); break; default: break; } } /** * 登錄 */ private void Login() { // TODO Auto-generated method stub String urlString = "http://111.39.245.157:9527/cmppbs/appLogin.action"; pDialog = new ProgressDialog(MainActivity.this); pDialog.setMessage("正在登錄..."); pDialog.show(); final HttpUtils utils = new HttpUtils(); utils.configCurrentHttpCacheExpiry(100); RequestParams requestParams = new RequestParams(); requestParams.addBodyParameter("user_name", userNameString); requestParams.addBodyParameter("pwd", pwdString); utils.send(HttpMethod.POST, urlString, requestParams, new RequestCallBack<String>() { @Override public void onFailure(HttpException arg0, String arg1) { // TODO Auto-generated method stub pDialog.dismiss(); Toast.makeText(MainActivity.this, "登錄失敗", Toast.LENGTH_SHORT).show(); } @Override public void onSuccess(ResponseInfo<String> arg0) { // TODO Auto-generated method stub pDialog.dismiss(); Log.d("jiejie", arg0.result); if (arg0.result != null) { try { JSONObject object = new JSONObject(arg0.result); int flg = object.getInt("flg"); String msg = object.getString("msg"); // 登錄成功 if (flg == 0) { keepLogin(); Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); startActivity(new Intent(MainActivity.this, MainHome.class)); finish(); /** * 得到cookie seesionid 並持久化到本地的核心代碼 */ DefaultHttpClient defaultHttpClient = (DefaultHttpClient) utils .getHttpClient(); CookieStore cookieStore = defaultHttpClient .getCookieStore(); List<Cookie> cookies = cookieStore .getCookies(); for (Cookie cookie : cookies) { if ("JSESSIONID".equals(cookie .getName())) { MyApplication.jsesionid = cookie .getValue();// 得到sessionid } MyApplication.presCookieStore .addCookie(cookie);// 將cookie保存在本地 } } else { Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); } } catch (Exception e) { // TODO: handle exception } } } }); } /** * 保存用戶的密碼和賬號 以便下次登錄可以直接使用 采用 SharedPreferences來存儲 */ private void keepLogin() { SharedPreferences sPreferences = getSharedPreferences("info", MODE_PRIVATE); SharedPreferences.Editor editor = sPreferences.edit(); editor.putString("name", userNameString); editor.putString("password", pwdString); editor.commit(); } } View Code

下面是PullToRefreshListView的使用  代碼在適配器 getview的方法重復調用了多次我沒有想到處理的方法

package com.examle.hello.text;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.examle.hello.adapter.ReceiveListAdapter;
import com.examle.hello.util.MyApplication;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.RequestParams;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

/**
 * 短信接收的界面
 * @author zh
 *
 */
public class MainReceiveFragment extends Fragment {
    private PullToRefreshListView listView;
    private ReceiveListAdapter adpter;
    private int j ;
    private List<JSONObject> dataList = new ArrayList<JSONObject>();
    private String urlString = "http://111.39.245.157:9527/cmppbs/getCmpp30DeliverList.action";
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        return inflater.inflate(R.layout.receivefragment, null, false);
    }
    
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);
        initView();
                
    }

    private void initView() {
        // TODO Auto-generated method stub
        listView =(PullToRefreshListView) getActivity().findViewById(R.id.expand_list);        
                
        listView.setMode(Mode.BOTH);
        setHttp();
        OnRefreshListener2<ListView> mListener2 = new OnRefreshListener2<ListView>() {

            @Override
            public void onPullDownToRefresh(
                    PullToRefreshBase<ListView> refreshView) {
                // TODO Auto-generated method stub
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                String date = simpleDateFormat.format(new Date());
                refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(date);
                new UpFresh().execute();
            }

            @Override
            public void onPullUpToRefresh(
                    PullToRefreshBase<ListView> refreshView) {
                // TODO Auto-generated method stub
                new MyTask().execute();
            }
        };
        listView.setOnRefreshListener(mListener2);
        j=2;
    }
    
    /**
     * 進行網絡的請求默認加載第一頁
     */
    private void setHttp(){
         HttpUtils httpUtils = new HttpUtils();
        RequestParams requestParams = new RequestParams();
        httpUtils.configCurrentHttpCacheExpiry(100);
        httpUtils.configCookieStore(MyApplication.presCookieStore);        
        requestParams.addBodyParameter("page", "1");
        requestParams.addBodyParameter("rows", "3");
        requestParams.addBodyParameter("order", "desc");
        httpUtils.send(HttpMethod.POST, urlString, requestParams, new RequestCallBack<String>() {

            @Override
            public void onFailure(HttpException arg0, String arg1) {
                // TODO Auto-generated method stub
                
            }

            @Override
            public void onSuccess(ResponseInfo<String> arg0) {
                // TODO Auto-generated method stub
                Log.d("jiejie", arg0.result);
                if(arg0.result !=null){
                    try {
                        JSONObject object=new JSONObject(arg0.result);
                        JSONArray array = object.getJSONArray("rows");
                        for (int i = 0; i < array.length(); i++) {
                            JSONObject dataJsonObject =array.getJSONObject(i);
                            dataList.add(dataJsonObject);
                        }
                        ListView listView2 = listView.getRefreshableView();
                        adpter = new ReceiveListAdapter(getActivity(),dataList);
                        listView2.setAdapter(adpter);
                    } catch (JSONException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }

            
        });
    }
    /**
     * 上拉加載
     * @author zh
     *
     */
    class MyTask extends AsyncTask<Void, Void, String[]>{

        @Override
        protected String[] doInBackground(Void... arg0) {
            // TODO Auto-generated method stub
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return null;
        }
        @Override
        protected void onPostExecute(String[] result) {
            // TODO Auto-generated method stub
            RequestParams requestParams = new RequestParams();
            requestParams.addBodyParameter("page", j+"");
            requestParams.addBodyParameter("rows", "3");
            requestParams.addBodyParameter("order", "desc");
            HttpUtils httpUtils = new HttpUtils();
            httpUtils.configCurrentHttpCacheExpiry(100);
            httpUtils.configCookieStore(MyApplication.presCookieStore);
            httpUtils.send(HttpMethod.POST, urlString, requestParams, new RequestCallBack<String>() {

                @Override
                public void onFailure(HttpException arg0, String arg1) {
                    // TODO Auto-generated method stub
                    
                }

                @Override
                public void onSuccess(ResponseInfo<String> arg0) {
                    // TODO Auto-generated method stub
                    Log.d("jiejie", arg0.result);
                    if(arg0.result!=null){
                        try {
                            JSONObject object=new JSONObject(arg0.result);
                            JSONArray list=object.getJSONArray("rows");
                            JSONObject data;
                            for (int i = 0; i < list.length(); i++) {
                                data = list.getJSONObject(i);
                                dataList.add(data);
                                /*Toast.makeText(getActivity(), dataList.get(0).toString(), Toast.LENGTH_LONG).show();*/
                            }
                            adpter.notifyDataSetChanged();
                            listView.onRefreshComplete();
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
            });
            super.onPostExecute(result);
            j++;
        }
    }
    
    class UpFresh extends AsyncTask<Void, Void, String[]>{

        @Override
        protected String[] doInBackground(Void... arg0) {
            // TODO Auto-generated method stub
            return null;
        }
        @Override
        protected void onPostExecute(String[] result) {
            // TODO Auto-generated method stub
            String url3="http://111.39.245.157:9527/cmppbs/getCmpp30DeliverList.action";
            RequestParams requestParams = new RequestParams();
            requestParams.addBodyParameter("page", "1");
            requestParams.addBodyParameter("rows", "3");
            requestParams.addBodyParameter("order", "desc");
            HttpUtils httpUtilss = new HttpUtils();
            httpUtilss.configCurrentHttpCacheExpiry(100);
            httpUtilss.configCookieStore(MyApplication.presCookieStore);
            httpUtilss.send(HttpMethod.POST, url3, requestParams, new RequestCallBack<String>() {

                @Override
                public void onFailure(HttpException arg0, String arg1) {
                    // TODO Auto-generated method stub
                    
                }

                @Override
                public void onSuccess(ResponseInfo<String> arg0) {
                    // TODO Auto-generated method stub
                    dataList.clear();
                    if(arg0.result !=null){
                        try {
                            JSONObject object = new JSONObject(arg0.result);
                            JSONArray list = object.getJSONArray("rows");
                            JSONObject data;
                            for(int i =0;i<list.length();i++){
                                data = list.getJSONObject(i);
                                dataList.add(data);
                            }
                            adpter.notifyDataSetChanged();
                            listView.onRefreshComplete();
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
            });
            super.onPostExecute(result);
        }
    }
    
}
package com.examle.hello.adapter;

import java.util.List;

import org.json.JSONException;
import org.json.JSONObject;

import com.examle.hello.text.R;

import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

/**
 * 短信接收的適配器
 * @author zh
 *
 */
public class ReceiveListAdapter extends BaseAdapter {
    private Context context;
    private List<JSONObject> dataList;
    

    public ReceiveListAdapter(Context context, List<JSONObject> dataList) {
        this.context = context;
        this.dataList = dataList;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return dataList.size();
    }

    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return arg0;
    }

    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return arg0;
    }

    @Override
    public View getView(int arg0, View arg1, ViewGroup arg2) {
        // TODO Auto-generated method stub
        ViewHolder holder = null;
        if(arg1 == null){
            holder = new ViewHolder();
            arg1 = View.inflate(context, R.layout.notereceive, null);
            holder.tv_item_r_yewu=(TextView)arg1.findViewById(R.id.item_r_yewu);
            holder.tv_item_r_phone=(TextView)arg1.findViewById(R.id.item_r_phone);
            holder.tv_item_r_content=(TextView)arg1.findViewById(R.id.item_r_content);
            holder.tv_item_r_time=(TextView)arg1.findViewById(R.id.item_r_time);
            arg1.setTag(holder);
        }else {
            holder = (ViewHolder) arg1.getTag();
        }
        try {
            Log.d("jiejie", "數據"+dataList);
            holder.tv_item_r_content.setText(dataList.get(arg0).getString("msgContent"));
            holder.tv_item_r_phone.setText(dataList.get(arg0).getString("srcTerminalId"));
            holder.tv_item_r_time.setText(dataList.get(arg0).getString("moDate"));
            holder.tv_item_r_yewu.setText(dataList.get(arg0).getString("tpPid"));
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }        
        return arg1;
    }
    static class ViewHolder{                
        TextView tv_item_r_yewu;
        TextView tv_item_r_phone;
        TextView tv_item_r_content;
        TextView tv_item_r_time;
    }
}

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved