package com.oc.mobilsecurity.personinfo; import java.util.ArrayList; import java.util.HashMap; import com.oc.mobilsecurity.R; import com.oc.mobilsecurity.Run; import com.oc.mobilsecurity.data.UserData; import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.os.AsyncTask; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class PersonInfoUnbind extends Activity { private Button back; private ListView mobile; private ListView PC; private ProgressDialog pd; private int type = 0; private String deviceName; private String[] mobileNames = UserData.getInstance() .getMoblileInformation().getMobileNames(); private String[] PCNames = UserData.getInstance().getMoblileInformation() .getPCNames(); private String[] unbind = { "���" }; private Run run = new Run(this); private UnBindTask unbindTask = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.personinfo_unbind); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar_back); mobile = (ListView) findViewById(R.id.unbindMobile); ArrayList<HashMap<String, Object>> listItemMobile = getListItem( "mobileName", mobileNames); ListViewAdapter listViewAdapterMobile = new ListViewAdapter(this, listItemMobile, "mobileName"); mobile.setAdapter(listViewAdapterMobile); mobile.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { if (unbindTask != null) { return; } type = 1; deviceName = mobileNames[arg2]; showProgress(true); unbindTask = new UnBindTask(); unbindTask.execute(mobileNames[arg2]); } }); PC = (ListView) findViewById(R.id.unbindPC); ArrayList<HashMap<String, Object>> listItemPC = getListItem("PCName", PCNames); ListViewAdapter listViewAdapterPC = new ListViewAdapter(this, listItemPC, "PCName"); PC.setAdapter(listViewAdapterPC); PC.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { if (unbindTask != null) { return; } type = 2; deviceName = PCNames[arg2]; showProgress(true); unbindTask = new UnBindTask(); unbindTask.execute(PCNames[arg2]); } }); back = (Button) findViewById(R.id.TitleBarBack); back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); } private ArrayList<HashMap<String, Object>> getListItem(String tag, String[] device) { ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>(); for (int i = 0; i < device.length; i++) { HashMap<String, Object> map = new HashMap<String, Object>(); map.put(tag, device[i]); map.put("unbind", unbind[0]); listItem.add(map); } return listItem; } private class ListViewAdapter extends BaseAdapter { @SuppressWarnings("unused") private Context context; private ArrayList<HashMap<String, Object>> listItems; private LayoutInflater listContainer; private String tag; public final class ListItemView { public TextView deviceName; public TextView unbind; } public ListViewAdapter(Context context, ArrayList<HashMap<String, Object>> listItems, String tag) { this.context = context; listContainer = LayoutInflater.from(context); this.listItems = listItems; this.tag = tag; } @Override public View getView(int arg0, View arg1, ViewGroup arg2) { ListItemView listItemView = null; if (arg1 == null) { listItemView = new ListItemView(); arg1 = listContainer.inflate(R.layout.button_arrow, null); listItemView.deviceName = (TextView) arg1 .findViewById(R.id.customButtonText1); listItemView.unbind = (TextView) arg1 .findViewById(R.id.customButtonText2); arg1.setTag(listItemView); } else { listItemView = (ListItemView) arg1.getTag(); } listItemView.deviceName.setText((String) listItems.get(arg0).get( tag)); listItemView.unbind.setText("���"); return arg1; } @Override public int getCount() { return listItems.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } } private void showProgress(final boolean show) { if (show) { pd = ProgressDialog.show(this, "���", "����У����Ժ󡭡�"); } else { pd.dismiss(); } } private void delArray() { switch (type) { case 1: for (int i=0; i<mobileNames.length; i++) { if (mobileNames[i].equals(deviceName)) { for (int j=i; j<mobileNames.length-1; j++) { mobileNames[j] = mobileNames[j+1]; } mobileNames[mobileNames.length-1] = ""; break; } } break; case 2: for (int i=0; i<PCNames.length; i++) { if (PCNames[i].equals(deviceName)) { for (int j=i; j<PCNames.length-1; j++) { PCNames[j] = PCNames[j+1]; } PCNames[PCNames.length-1] = ""; break; } } } } private class UnBindTask extends AsyncTask<String, Void, Boolean> { @Override protected Boolean doInBackground(String... params) { boolean result = false; switch (type) { case 1: result = run.unbindMobil(params[0]); break; case 2: result = run.unbindPC(params[0]); break; } return result; } @Override protected void onPostExecute(final Boolean success) { unbindTask = null; showProgress(false); if (success) { switch (type) { case 1: UserData.getInstance().getMoblileInformation() .delMobile(deviceName); mobileNames = UserData.getInstance().getMoblileInformation() .getMobileNames(); delArray(); ListViewAdapter mAdapter = (ListViewAdapter)mobile.getAdapter(); mAdapter.notifyDataSetChanged(); break; case 2: UserData.getInstance().getMoblileInformation() .delPC(deviceName); PCNames = UserData.getInstance().getMoblileInformation() .getPCNames(); delArray(); ListViewAdapter pAdapter = (ListViewAdapter)PC.getAdapter(); pAdapter.notifyDataSetChanged(); break; } Toast.makeText(getBaseContext(), "���ɹ�", Toast.LENGTH_SHORT) .show(); } else { Toast.makeText(getBaseContext(), "���ʧ��", Toast.LENGTH_SHORT) .show(); } } @Override protected void onCancelled() { unbindTask = null; showProgress(false); } } }