Android页面刷新 (第四周)

这里写图片描述

现在是入职第四周,这周在页面实时刷新跪了
职位管理模块 Activity–>5个Fragment,我采用的是5个页面复用一个adapter,下边的按钮进行判断,来显示并实现功能
按钮方面我偷懒了,因为每个页面按钮数目都不一样,所以我给adapter传入一个数组,判断数组的大小来确定是那个页面
JobManagerAdapter.java

package com.runsheng.zyzp4a.adapter;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.google.gson.Gson;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
import com.runsheng.zyzp4a.R;
import com.runsheng.zyzp4a.base.BaseActivity;
import com.runsheng.zyzp4a.bean.GsonDataBean;
import com.runsheng.zyzp4a.bean.JobManagerBean;
import com.runsheng.zyzp4a.constant.ConstantURL;
import com.runsheng.zyzp4a.ui.JobManageItemInfoModifyActivity;

public class JobManager_lv_Adapter extends BaseAdapter{

    List<JobManagerBean> list;
    String[] buttonName;
    Context context;
    String url="";
    DownloadTask dTask=null;
    public static final String COMPANY_ID="535662D0416911E5A076F8F061532E9D";
    GsonDataBean gsonBean=null;
    public JobManager_lv_Adapter(Context context,List<JobManagerBean> list) {
        this.context=context;
        this.list=list;

    }
    public JobManager_lv_Adapter(Context context,List<JobManagerBean> list,String[] buttonName) {
        this.context=context;
        this.list=list;
        this.buttonName=buttonName;

    }

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

    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return list.get(arg0);
    }
    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return arg0;
    }
    @Override
    public View getView(final int position, View view, ViewGroup arg2) {

        ViewHolder holder=null;
        final JobManagerBean bean=list.get(position);
        if(view==null){
            holder=new ViewHolder();
            view=LayoutInflater.from(context).inflate(R.layout.item_lv_job_manage, null);
            holder.jianli_num=(TextView) view.findViewById(R.id.jianli_num);
            holder.jobTime=(TextView) view.findViewById(R.id.jobTime);
            holder.jobName=(TextView) view.findViewById(R.id.jobName);
            holder.jobArea=(TextView) view.findViewById(R.id.jobArea);
            holder.updateDate=(TextView) view.findViewById(R.id.updateDate);
            holder.modiDate=(TextView) view.findViewById(R.id.modiDate);
            holder.item_modifi=(Button) view.findViewById(R.id.item_modifi);
            holder.item_refresh=(Button) view.findViewById(R.id.item_refresh);
            holder.item_top=(Button) view.findViewById(R.id.item_top);
            holder.item_pause=(Button) view.findViewById(R.id.item_pause);
            holder.item_delete=(Button) view.findViewById(R.id.item_delete);

            if(buttonName.length<1){//freeze:已冻结的职位
                holder.item_modifi.setVisibility(View.GONE);
                holder.item_refresh.setVisibility(View.GONE);
                holder.item_top.setVisibility(View.GONE);
                holder.item_pause.setVisibility(View.GONE);
                holder.item_delete.setVisibility(View.GONE);
            }else if(buttonName.length<2){//pause:已暂停的职位
                holder.item_modifi.setVisibility(View.INVISIBLE);
                holder.item_top.setVisibility(View.INVISIBLE);
                holder.item_refresh.setVisibility(View.GONE);
                holder.item_delete.setVisibility(View.GONE);
                holder.item_pause.setText("恢复");
                holder.item_pause.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        url=ConstantURL.JOB_OPEN+"?companyId="+COMPANY_ID+"&jobIds="+bean.jobId;            
                        dTask = new DownloadTask();
                        dTask.execute(url);
                    }
                });

            }else if(buttonName.length<3){//end:发布结束职位
                holder.item_modifi.setVisibility(View.GONE);
                holder.item_top.setVisibility(View.GONE);
                holder.item_pause.setVisibility(View.GONE);
                holder.item_delete.setText("存为模板");
                holder.item_refresh.setText("修改");
                holder.item_delete.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        url=ConstantURL.SAVE_JOB_FORM+"?companyId="+COMPANY_ID+"&jobIds="+bean.jobId;           
                        dTask = new DownloadTask();
                        dTask.execute(url);
                    }
                });
                holder.item_refresh.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        Toast.makeText(context, "点击了修改!", 2000).show(); 
                        JobManagerBean bean1=list.get(position);
                        Intent intent=new Intent(context,JobManageItemInfoModifyActivity.class);
                        Bundle bundle=new Bundle();
                        bundle.putSerializable("jobInfo", bean1);
                        intent.putExtras(bundle);
                        context.startActivity(intent);

                    }
                });

            }else if(buttonName.length<4){//on:发布中的职位页面
                holder.item_modifi.setVisibility(View.GONE);
                holder.item_top.setVisibility(View.GONE);
                holder.item_pause.setText("暂停");
                holder.item_delete.setText("刷新");
                holder.item_refresh.setText("修改");
                holder.item_pause.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        url=ConstantURL.JOB_PAUSE+"?companyId="+COMPANY_ID+"&jobIds="+bean.jobId;   
                        String  str=bean.jobId;
                        dTask = new DownloadTask();
                        dTask.execute(url);
                    }
                });
                holder.item_delete.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        Toast.makeText(context, "已刷新!", 2000).show();                   

                    }
                });
                holder.item_refresh.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        Toast.makeText(context, "点击了修改!", 2000).show();                 
                        JobManagerBean bean2=list.get(position);
                        Intent intent=new Intent(context,JobManageItemInfoModifyActivity.class);
                        Bundle bundle=new Bundle();
                        bundle.putSerializable("jobInfo", bean2);
                        intent.putExtras(bundle);
                        context.startActivity(intent);
                    }
                });

            }else if(buttonName.length<5){//no:未发布职位页面
                holder.item_modifi.setText("存为模板");
                holder.item_top.setText("发布");
                holder.item_pause.setVisibility(View.GONE);
                holder.item_delete.setText("删除");
                holder.item_refresh.setText("修改");

                holder.item_modifi.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        url=ConstantURL.SAVE_JOB_FORM+"?companyId="+COMPANY_ID+"&jobIds="+bean.jobId;           
                        dTask = new DownloadTask();
                        dTask.execute(url);                 }
                });
                holder.item_top.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        url=ConstantURL.SEND_JOB_POST+"?companyId="+COMPANY_ID+"&jobIds="+bean.jobId;           
                        dTask = new DownloadTask();
                        dTask.execute(url);
                    }
                });
                holder.item_delete.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        url=ConstantURL.DELETE_JOB+"?companyId="+COMPANY_ID+"&jobId="+bean.jobId;           
                        dTask = new DownloadTask();
                        dTask.execute(url);
                    }
                });
                holder.item_refresh.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        Toast.makeText(context, "点击了修改!", 2000).show();                 
                        JobManagerBean bean3=list.get(position);
                        Intent intent=new Intent(context,JobManageItemInfoModifyActivity.class);
                        Bundle bundle=new Bundle();
                        bundle.putSerializable("jobInfo", bean3);
                        intent.putExtras(bundle);
                        context.startActivity(intent);   
                    }
                });

            }

            view.setTag(holder);
        }else{
            holder=(ViewHolder) view.getTag();
        }

        holder.jianli_num.setText(list.get(position).countResumeNum);
        holder.jobTime.setText("职位有效期:"+list.get(position).finallyDate);
        holder.jobName.setText(list.get(position).jobName);
        holder.jobArea.setText(list.get(position).publishAreaName);
        holder.updateDate.setText("更新于"+list.get(position).updateDate);
        holder.modiDate.setText("修改于:"+list.get(position).updateDate);
        return view;

    }
    //     ansyctask 任务封装

    private class DownloadTask extends AsyncTask<String, Integer, GsonDataBean> {


        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected GsonDataBean doInBackground(String... url) {
            // 参数是params,联网请求数据,将数据封成bean 返回

            String result = BaseActivity.requestUrl(HttpMethod.GET, url[0], null);

            Gson gson = new Gson();

            GsonDataBean bean=gson.fromJson(result, GsonDataBean.class);

            return bean;
        }

        @Override
        protected void onPostExecute(GsonDataBean result) {
            // TODO Auto-generated method stub
            Toast.makeText(context, result.message, 0).show();
        }

    }   

    public static class ViewHolder{
        TextView jianli_num,jobTime,jobName,jobArea,updateDate,modiDate;
        Button item_modifi,item_refresh,item_top,item_pause,item_delete;
    }
}


JobManageFra_on.java//第一个fragment

package com.runsheng.zyzp4a.fragment;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.google.gson.reflect.TypeToken;
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 com.runsheng.zyzp4a.R;
import com.runsheng.zyzp4a.adapter.JobManager_lv_Adapter;
import com.runsheng.zyzp4a.base.BaseFragment;
import com.runsheng.zyzp4a.bean.JobManagerBean;
import com.runsheng.zyzp4a.ui.JobManageItemInfoModifyActivity;

public class JobManageFra_on extends BaseFragment{

private ListView lv;
JobManager_lv_Adapter adapter;
String[] buttonName={"修改","修改","修改"};
ArrayList<JobManagerBean>  list=new ArrayList<JobManagerBean>();
JobManagerBean bean;
public static final String My_URL="http://192.168.100.98/zyzp/selectJobListAndroid.htm";
@Override       
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view=inflater.inflate(R.layout.job_manage_frag_on, container, false);

    lv=(ListView) view.findViewById(R.id.on_lv);
    postDataToService();
    initListener(view);
    return view;
}

public void initListener(View view) {
    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            JobManagerBean bean=list.get(arg2);
            Intent intent=new Intent(getActivity(),JobManageItemInfoModifyActivity.class);
            Bundle bundle=new Bundle();
            bundle.putSerializable("jobInfo", bean);
            intent.putExtras(bundle);
            startActivity(intent);
        }
    });
}

public void postDataToService(){
    RequestParams params = new RequestParams();
    params.addBodyParameter("companyId","11D9BBD03C1511E5BBD0ECE753FAC7CE");
    params.addBodyParameter("sb","0");

    requestUrl(HttpMethod.POST,My_URL, params,new RequestCallBack<String>() {

        @Override
        public void onFailure(HttpException arg0, String err) {
            Toast.makeText(getActivity(), "on错误!", 2000).show();        


        }
        @Override
        public void onSuccess(ResponseInfo<String> info) {
            Toast.makeText(getActivity(),"on成功", 2000).show();
            String  res=info.result;

            //              System.out.println(res);

            Gson gson=new Gson();
            String beanArr=gson.toJson(info.result);
            List<JobManagerBean> list2 = null;
            try {
                list2 = gson.fromJson(res, new TypeToken<List<JobManagerBean>>(){}.getType());

            } catch (JsonSyntaxException e) {
                e.printStackTrace();
            }

            adapter=new JobManager_lv_Adapter(getActivity(), list2,buttonName);
            lv.setAdapter(adapter);

            //              Gson gson=new Gson();
            //              JsonParser parser=new JsonParser();
            //              List<Map<String, String>> list=new ArrayList<Map<String, String>>();
            //              JsonObject jsonObject=parser.parse(res).getAsJsonObject();
            //              JsonArray jsonArray=jsonObject.getAsJsonArray("jobList");
            //               Type type = new TypeToken<Map<String,String>>() {}.getType();
            //                for(int i=0;i<jsonArray.size();i++){
            //                          JsonElement el=jsonArray.get(i);
            //                          Map<String, String>  tmp=gson.fromJson(el,type);
            //                          list.add(tmp);
            //                }         
            //              jsonObject.remove("jobList");
            //              jsonObject.add("jobList", parser.parse(gson.toJson(list)).getAsJsonArray());



            //          try {
            //              JSONObject jsonObject = new JSONObject(res);//将此json数据变成一个对象。
            //              JSONArray jsonArray = jsonObject.getJSONArray("jobList");//获得list里面的数据
            //              
            //              for (int i = 0; i < jsonArray.length(); i++) {
            //                  bean=new JobManagerBean();
            //                  JSONObject item = (JSONObject)jsonArray.opt(i); 
                                JSONObject item = jsonArray.getJSONObject(i); // 每条记录又由几个Object对象组成
            //                  bean.jobName=item.has("jobName") ? item.getString("jobName") : "";
            //                  bean.publishAreaName=item.has("publishAreaName") ? item.getString("publishAreaName") : "";
            //                  bean.finallyDate = item.has("finallyDate")?item.getString("finallyDate"):"";
            //                  bean.countResumeNum =item.has("countResumeNum")?item.getString("countResumeNum"):"";
            //                  bean.updateDate=item.has("updateDate")?item.getString("updateDate"):"";
            //              list.add(bean); 
            //              }
            //              adapter=new JobManager_lv_Adapter(getActivity(), list);
            //              lv.setAdapter(adapter);
            //          } catch (JSONException e) {
            //              e.printStackTrace();
            //          }

        }
    } );
}

}

参数过多,还是用GSON方便
这是前两周写的
本周老大让把代码进行整合和功能完善,首要的就是实时刷新的实现(我竟然跪了)
比如第一个页面,点击(暂停),把该item转到第二页面
一般的用adapter.adapter.notifyDataSetChange()来刷新,但是item上的按钮点击事件我写在adapter中,so…怎样刷新呢

中间的种种尝试,我也只能叹口气
尝试用回调等等…..
最后…

public class JobManageFra_on extends  BaseFragment{

    private ListView lv;
    DownloadTask dTask=null;
    ArrayList<JobManagerBean> lists=null;
    public static final String COMPANY_ID="535662D0416911E5A076F8F061532E9D";
    GsonDataBean gsonBean=null;
    ArrayList<JobManagerBean>  list=new ArrayList<JobManagerBean>();
    JobManagerBean bean;
    public static final String My_URL="http://192.168.100.98/zyzp/selectJobListAndroid.htm";
    @Override       
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.job_manage_frag_on, container, false);

        lv=(ListView) view.findViewById(R.id.on_lv);
        String url =My_URL + "?companyId="
                + "535662D0416911E5A076F8F061532E9D"+"&sb="+"0";
        MDownloadTask dTask = new MDownloadTask();
        dTask.execute(url);
        initListener(view);
        return view;
    }

    public void initListener(View view) {
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                JobManagerBean bean=lists.get(arg2);
                Intent intent=new Intent(getActivity(),JobManageItemInfoModifyActivity.class);
                Bundle bundle=new Bundle();
                bundle.putSerializable("jobInfo", bean);
                intent.putExtras(bundle);
                startActivity(intent);
            }
        });
    }

    private CommonAdapter<JobManagerBean> myAdapter;
    private void setAdapter(final List<JobManagerBean> lists) {
        myAdapter = new CommonAdapter<JobManagerBean>(getActivity(), lists,
                R.layout.item_lv_job_manage) {
            @Override
            public void convert(ViewHolder helper, final JobManagerBean item) {
                helper.setText(R.id.jianli_num, item.countResumeNum);
                helper.setText(R.id.jobTime,"职位有效期:"+item.finallyDate);
                helper.setText(R.id.jobName, item.jobName);
                helper.setText(R.id.jobArea, item.publishAreaName);
                helper.setText(R.id.updateDate,"更新于:"+item.updateDate);
                helper.setText(R.id.modiDate,"修改于:"+ item.updateDate);

                Button  item_modifi=helper.getView( R.id.item_modifi);
                Button  item_top=helper.getView( R.id.item_top);
                Button  item_pause=helper.getView( R.id.item_pause);
                Button  item_delete=helper.getView( R.id.item_delete);
                Button  item_refresh=helper.getView( R.id.item_refresh);

                item_modifi.setVisibility(View.GONE);
                item_top.setVisibility(View.GONE);
                item_pause.setText("暂停");
                item_delete.setText("刷新");
                item_refresh.setText("修改");
                item_pause.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {

                        String url=ConstantURL.JOB_PAUSE+"?companyId="+COMPANY_ID+"&jobIds="+item.jobId;    
                        String  str=item.jobId;
                        dTask = new DownloadTask();
                        dTask.execute(url);
                    }
                });
                item_delete.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        Toast.makeText(getActivity(), "已刷新!", 2000).show();                 
                    }
                });
                item_refresh.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View arg0) {
                        Toast.makeText(getActivity(), "点击了修改!", 2000).show();                   
                        Intent intent=new Intent(getActivity(),JobManageItemInfoModifyActivity.class);
                        Bundle bundle=new Bundle();
                        bundle.putSerializable("jobInfo", item);
                        intent.putExtras(bundle);
                        startActivity(intent);
                    }
                });
            }
        };
        lv.setAdapter(myAdapter);
    }
     class DownloadTask extends AsyncTask<String, Integer, GsonDataBean> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }
        @Override
        protected GsonDataBean doInBackground(String... url) {
            // 参数是params,联网请求数据,将数据封成bean 返回
            String result = BaseActivity.requestUrl(HttpMethod.GET, url[0], null);
            Gson gson = new Gson();
            GsonDataBean bean=gson.fromJson(result, GsonDataBean.class);
            return bean;
        }
        @Override
        protected void onPostExecute(GsonDataBean result) {
            Toast.makeText(getActivity(), result.message, 0).show();
            String url =My_URL + "?companyId="
                    + "535662D0416911E5A076F8F061532E9D"+"&sb="+"0";
            MDownloadTask dTask = new MDownloadTask();
            dTask.execute(url);
        }
    }   

    class MDownloadTask extends AsyncTask<String, Integer, List<JobManagerBean>> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }
        @Override
        protected List<JobManagerBean> doInBackground(String... url) {
            // 参数是params,联网请求数据,将数据封成bean 返回
            String result = requestUrl(HttpMethod.GET, url[0], null);
            // 将数据封装到bean中去
             lists = new ArrayList<JobManagerBean>();
            Gson gson = new Gson();
            try {
                lists = gson.fromJson(result,
                        new TypeToken<List<JobManagerBean>>() {
                }.getType());
            } catch (Exception e) {
                System.out.println("解析失败");
            }
            return lists;
        }
        @Override
        protected void onPostExecute(List<JobManagerBean> lists) {
            setAdapter(lists);
        }
    }
}

还是我太菜啊
将adapter写在Fragment中,用了2个AsyncTask,首先用第一个MDownloadTask获取到列表,当按钮点击后,通过第二个DownloadTask进行网络请求,在onPostExecute()方法中在请求次列表

希望我后边能写出别的方法吧!
http://www.devba.com/index.php/archives/5826.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值