80,351
社区成员
发帖
与我相关
我的任务
分享
if (null == mTrackListAdapter) {
mTrackListAdapter = new ProductionTrackListAdapter(getActivity());
}
mListView.setAdapter(mTrackListAdapter);
mTrackListAdapter.setData()
package com.baosteel.moa.common;
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 com.baosteel.moa.interfaces.Initialization;
public class BaseFragment extends Fragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (this instanceof Initialization) {
Initialization init = (Initialization) this;
init.onInitViews();
init.onInitListener();
init.onInitData();
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
BaseActivity baseActivity = (BaseActivity) getActivity();
baseActivity.initHeader();
return super.onCreateView(inflater, container, savedInstanceState);
}
public void v(String msg) {
Log.v(BaseFragment.class.getCanonicalName(), msg);
}
}
package com.baosteel.moa.interfaces;
/** 如果需要对布局控件等初始化,让对应的Activity或Fragment实现该接口(为了代码的规范化) */
public interface Initialization {
/** 执行findviewbyid等操作 */
public void onInitViews();
/** 绑定监听器 */
public void onInitListener();
/** 请求网络数据等 */
public void onInitData();
}
package com.baosteel.moa.productiontrack;
import java.util.HashMap;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.Toast;
import com.baosteel.moa.R;
import com.baosteel.moa.common.BaseFragment;
import com.baosteel.moa.http.BaseRequest;
import com.baosteel.moa.http.WorkRequest;
import com.baosteel.moa.http.bean.ProductionTrackGetContractsResponse;
import com.baosteel.moa.http.listener.RequestSuccessedListener;
import com.baosteel.moa.interfaces.Initialization;
import com.baosteel.moa.util.FileUtil;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
/***
* 合同跟踪
*
* @author Administrator
*
*/
public class ProductionTrackFragment extends BaseFragment implements
Initialization {
private View mView;
private Gson mGson;
private ProductionTrackGetContractsResponse mContractResponse;
private PullToRefreshListView mListView;
private ProductionTrackListAdapter mTrackListAdapter;
private int mPageNum;
private static final int PAGE_SIZE = 10;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
mView = inflater.inflate(R.layout.production_track_fragment, null);
return mView;
}
@Override
public void onInitViews() {
mListView = (PullToRefreshListView) mView
.findViewById(R.id.production_track_listview);
}
@Override
public void onInitListener() {
mListView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "点我干哈?", 0).show();
}
});
mListView.setOnRefreshListener(new OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(
PullToRefreshBase<ListView> refreshView) {
requestContract(0);
}
@Override
public void onPullUpToRefresh(
PullToRefreshBase<ListView> refreshView) {
requestContract(++mPageNum);
}
});
}
@Override
public void onInitData() {
mGson = new Gson();
if (null == mTrackListAdapter) {
mTrackListAdapter = new ProductionTrackListAdapter(getActivity());
}
mListView.setAdapter(mTrackListAdapter);
requestContract(0);
}
@Override
public void onResume() {
super.onResume();
v("onResume");
}
@Override
public void onPause() {
super.onPause();
v("onPause");
}
public void requestContract(int pageNum) {
String content = new String(FileUtil.readText(getActivity(),
"ProductionTrackGetContract_"));
HashMap<String, String> params = new HashMap<String, String>();
params.put(BaseRequest.PARAMETER_POSTDATA,
String.format(content, pageNum, PAGE_SIZE));
WorkRequest request = new WorkRequest(getActivity(), params,
new RequestSuccessedListener() {
@Override
public void requestSuccessed(String result) {
FileUtil.saveToDisk("getContract", result);
mContractResponse = mGson.fromJson(result,
ProductionTrackGetContractsResponse.class);
mTrackListAdapter = new ProductionTrackListAdapter(getActivity());
mTrackListAdapter
.setData(mContractResponse.blocks.r0.rows);
mListView.setAdapter(mTrackListAdapter);
}
});
request.execute();
mPageNum = pageNum;
}
}
这是Adapter的
package com.baosteel.moa.productiontrack;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.baosteel.moa.R;
public class ProductionTrackListAdapter extends BaseAdapter {
public static final int TYPE_TITLE = 0;
public static final int TYPE_CONTENT = 1;
private Context mContext;
private List<List<String>> mData;
/** 记录title位置的布尔数组 */
private List<Integer> mTitlePosition;
/** 记录title的值(即日期) */
private List<String> mTitleInfo;
private int mTitleAddedCount = 0;
private int mCount;
public ProductionTrackListAdapter(Context context, List<List<String>> rows) {
this.mContext = context;
this.mTitlePosition = new ArrayList<Integer>(1);
this.mTitleInfo = new ArrayList<String>(1);
this.mData = rows;
getTitleInfo(rows);
this.mCount = mData.size() + mTitleInfo.size();
}
public ProductionTrackListAdapter(Context context) {
this.mContext = context;
this.mTitlePosition = new ArrayList<Integer>(1);
this.mTitleInfo = new ArrayList<String>(1);
this.mData = new ArrayList<List<String>>(1);
}
@Override
public int getCount() {
v("getCount:" + this.mCount);
return this.mCount;
}
@Override
public Object getItem(int position) {
return 0;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getViewTypeCount() {
v("getViewTypeCount");
return 2;
}
@Override
public int getItemViewType(int position) {
v("getItemViewType");
int type;
if (mTitlePosition.contains(position)) {
type = TYPE_TITLE;
} else {
type = TYPE_CONTENT;
}
return type;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
v("getView");
int type = getItemViewType(position);
switch (type) {
case TYPE_TITLE:
if (null == convertView) {
convertView = LayoutInflater.from(mContext).inflate(
R.layout.production_track_listview_title, null);
mTitleHolder = new TitleHolder();
mTitleHolder.titleTv = (TextView) convertView
.findViewById(R.id.production_track_listview_title_tv);
convertView.setTag(mTitleHolder);
} else {
mTitleHolder = (TitleHolder) convertView.getTag();
}
mTitleHolder.titleTv.setText(mTitleInfo.get(mTitleAddedCount++));
break;
case TYPE_CONTENT:
if (null == convertView) {
convertView = LayoutInflater.from(mContext).inflate(
R.layout.production_track_listview_content, null);
mContentHolder = new ContentHolder();
mContentHolder.contractTv = (TextView) convertView
.findViewById(R.id.production_track_listview_content_contract);
mContentHolder.amountTv = (TextView) convertView
.findViewById(R.id.production_track_listview_content_amount);
convertView.setTag(mContentHolder);
} else {
mContentHolder = (ContentHolder) convertView.getTag();
}
mContentHolder.amountTv.setText(this.mData.get(
position - mTitleAddedCount).get(25));
mContentHolder.contractTv.setText(this.mData.get(
position - mTitleAddedCount).get(0));
break;
default:
break;
}
return convertView;
}
private TitleHolder mTitleHolder;
private class TitleHolder {
TextView titleTv;
}
private ContentHolder mContentHolder;
private class ContentHolder {
TextView contractTv;
TextView amountTv;
}
public void setData(List<List<String>> rows) {
v("setData");
Collections.sort(rows, new ProductionTrackComparable());
this.mData.clear();
this.mData.addAll(rows);
this.mTitleAddedCount = 0;
getTitleInfo(rows);
notifyDataSetChanged();
}
/** 计算不同日期的个数 */
private void getTitleInfo(List<List<String>> rows) {
this.mTitleInfo.clear();
this.mTitlePosition.clear();
String tStr = "";
final List<List<String>> tRowsList = rows;
for (int i = 0; i < tRowsList.size(); i++) {
List<String> tList = tRowsList.get(i);
String compareStr = tList.get(7);
if (!tStr.equals(compareStr)) {
tStr = compareStr;
this.mTitleInfo.add(compareStr);
this.mTitlePosition.add(i);
}
}
this.mCount = mData.size() + mTitleInfo.size();
}
public void v(String msg) {
Log.v("adapter", msg);
}
}