现在是入职第四周,这周在页面实时刷新跪了
职位管理模块 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