package com.fanxin.app.fx; import java.util.HashMap; import java.util.Map; import android.annotation.SuppressLint; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.fanxin.app.Constant; import com.fanxin.app.MYApplication; import com.fanxin.app.R; import com.fanxin.app.activity.BaseActivity; import com.fanxin.app.db.ACache; import com.fanxin.app.fx.others.LoadDataFromServer; import com.fanxin.app.fx.others.LoadDataFromServer.DataCallBack; public class BankCardActivity extends BaseActivity { private MyAdapter adapter; private JSONArray datas; private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_bank_card); initView(); } @SuppressLint("InflateParams") private void initView() { listView = (ListView) this.findViewById(R.id.listView); View footView = LayoutInflater.from(getApplicationContext()).inflate( R.layout.item_bank_card_footer, null); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (position == datas.size()) { startActivity(new Intent(BankCardActivity.this,AddCardActivity.class)); } else { } } }); listView.addFooterView(footView); datas = ACache.get(getApplicationContext()).getAsJSONArray( Constant.CARDLIST); if (datas == null) { Log.e("111111", "111111"); getData(true); } else { Log.e("22222",datas.toJSONString()); adapter = new MyAdapter(BankCardActivity.this, datas); listView.setAdapter(adapter); getData(false); } } private void getData(final boolean needDialog) { final ProgressDialog dialog = new ProgressDialog(BankCardActivity.this); if (needDialog) { dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); dialog.setMessage("正在加载..."); dialog.show(); } Map<String, String> map = new HashMap<String, String>(); map.put("hxid", MYApplication.getInstance().getUserName()); LoadDataFromServer task = new LoadDataFromServer(BankCardActivity.this, Constant.URL_CARDS, map); task.getData(new DataCallBack() { @Override public void onDataCallBack(JSONObject data) { if (needDialog && dialog.isShowing()) { dialog.dismiss(); } if (data == null) { Toast.makeText(getApplicationContext(), "访问服务器错误,更新失敗...", Toast.LENGTH_SHORT).show(); return; } int code = data.getInteger("code"); if (code == 1) { datas = data.getJSONArray("data"); adapter = new MyAdapter(BankCardActivity.this, datas); listView.setAdapter(adapter); ACache.get(getApplicationContext()).put(Constant.CARDLIST, datas); } else { Toast.makeText(getApplicationContext(), "更新失敗...", Toast.LENGTH_SHORT).show(); } } }); } class MyAdapter extends BaseAdapter { private Context context; private JSONArray jsons; private LayoutInflater inflater; public MyAdapter(Context context_, JSONArray jsons) { this.context = context_; this.jsons = jsons; inflater = LayoutInflater.from(context); } @Override public int getCount() { // TODO Auto-generated method stub return jsons.size(); } @Override public JSONObject getItem(int position) { return jsons.getJSONObject(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (position != jsons.size()) { convertView = inflater.inflate(R.layout.item_bank_card, parent, false); TextView tv_card_num=(TextView) convertView.findViewById(R.id.tv_card_num); JSONObject json=getItem(position); String cardID=json.getString("cardID"); tv_card_num.setText(cardID); } else { convertView = inflater.inflate(R.layout.item_bank_card_footer, parent, false); } return convertView; } } @Override protected void onResume() { super.onResume(); datas = ACache.get(getApplicationContext()).getAsJSONArray( Constant.CARDLIST); if(datas!=null){ adapter = new MyAdapter(BankCardActivity.this, datas); listView.setAdapter(adapter); } } }