package com.wise.wawc; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONObject; import com.wise.list.XListView; import com.wise.list.XListView.IXListViewListener; import com.wise.pubclas.Constant; import com.wise.pubclas.NetThread; import com.wise.sql.DBExcute; import com.wise.sql.DBHelper; import android.app.Activity; import android.content.ContentValues; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; /** * 保险公司 */ public class InsuranceActivity extends Activity implements IXListViewListener { private static final int getData = 1; XListView lv_insurance; List<InsuranceData> insuranceDatas = new ArrayList<InsuranceData>(); InSuranceAdapter inSuranceAdapter; boolean isNeedPhone = false; int code; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_insurance); Intent intent = getIntent(); isNeedPhone = intent.getBooleanExtra("isNeedPhone", false); code = intent.getIntExtra("code", 0); lv_insurance = (XListView) findViewById(R.id.lv_insurance); lv_insurance.setXListViewListener(this); lv_insurance.setPullLoadEnable(false); inSuranceAdapter = new InSuranceAdapter(); lv_insurance.setAdapter(inSuranceAdapter); lv_insurance.setOnItemClickListener(onItemClickListener); getDBData(); ImageView iv_back = (ImageView)findViewById(R.id.iv_back); iv_back.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } }); } Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case getData: jsonData(msg.obj.toString()); //插入到服务器 JudgeInsurance(msg.obj.toString()); onLoad(); break; default: break; } } }; OnItemClickListener onItemClickListener = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { if(!isNeedPhone){ Intent intent = new Intent(); InsuranceData insuranceData = (InsuranceData) lv_insurance.getItemAtPosition(arg2); intent.putExtra("insurance_name", insuranceData.getName()); intent.putExtra("insurance_phone", insuranceData.getService_phone()); if(code == NewVehicleActivity.newVehicleInsurance){ InsuranceActivity.this.setResult(NewVehicleActivity.newVehicleInsurance, intent); }else if(code == 2){ InsuranceActivity.this.setResult(2, intent); } InsuranceActivity.this.finish(); } } }; boolean isHaveInsurance = false; private void getDBData() { DBHelper dbHelper = new DBHelper(this); SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.rawQuery("select * from " + Constant.TB_Base + " where Title=?", new String[] { "insurance" }); if (cursor.getCount() == 0) { String url = Constant.BaseUrl + "base/insurance"; new Thread(new NetThread.GetDataThread(handler, url, getData)) .start(); } else { if (cursor.moveToFirst()) { isHaveInsurance = true; String Content = cursor.getString(cursor.getColumnIndex("Content")); jsonData(Content); } } cursor.close(); db.close(); } private void jsonData(String result){ try { insuranceDatas.clear(); JSONArray jsonArray = new JSONArray(result); for(int i = 0 ; i < jsonArray.length() ; i++){ InsuranceData insuranceData = new InsuranceData(); JSONObject jsonObject = jsonArray.getJSONObject(i); insuranceData.setName(jsonObject.getString("name")); insuranceData.setService_phone(jsonObject.getString("service_phone")); insuranceDatas.add(insuranceData); } inSuranceAdapter.notifyDataSetChanged(); } catch (Exception e) { e.printStackTrace(); } } private void JudgeInsurance(String result) { if (isHaveInsurance) {// 更新 UpdateInsurance(result, "insurance"); } else {// 插入 InsertInsurance(result, "insurance"); } } private void UpdateInsurance(String result, String Title) { DBExcute dbExcute = new DBExcute(); ContentValues values = new ContentValues(); values.put("Content", result); dbExcute.UpdateDB(InsuranceActivity.this, values, Title); } private void InsertInsurance(String result, String Title) { DBExcute dbExcute = new DBExcute(); ContentValues values = new ContentValues(); values.put("Title", Title); values.put("Content", result); dbExcute.InsertDB(InsuranceActivity.this, values, Constant.TB_Base); } @Override public void onRefresh() { String url = Constant.BaseUrl + "base/insurance"; new Thread(new NetThread.GetDataThread(handler, url, getData)) .start(); } private void onLoad() { lv_insurance.stopRefresh(); lv_insurance.stopLoadMore(); } @Override public void onLoadMore() {} private class InSuranceAdapter extends BaseAdapter { LayoutInflater mInflater = LayoutInflater.from(InsuranceActivity.this); @Override public int getCount() { return insuranceDatas.size(); } @Override public Object getItem(int position) { return insuranceDatas.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.item_insurance, null); holder = new ViewHolder(); holder.tv_phone = (TextView) convertView.findViewById(R.id.tv_phone); holder.tv_name = (TextView) convertView.findViewById(R.id.tv_name); holder.iv_phone = (ImageView) convertView.findViewById(R.id.iv_phone); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } final InsuranceData insuranceData = insuranceDatas.get(position); holder.tv_phone.setText(insuranceData.getService_phone()); holder.tv_name.setText(insuranceData.getName()); if(isNeedPhone){ holder.iv_phone.setVisibility(View.VISIBLE); holder.iv_phone.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:"+ insuranceData.getService_phone())); startActivity(intent); } }); }else{ holder.iv_phone.setVisibility(View.INVISIBLE); } return convertView; } private class ViewHolder { TextView tv_phone,tv_name; ImageView iv_phone; } } private class InsuranceData { String name; String service_phone; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getService_phone() { return service_phone; } public void setService_phone(String service_phone) { this.service_phone = service_phone; } } }