最近在做一个地区选择的项目,找了很多都不是很理想,昨天发现淘宝手机客户端新增地址地区选择很不错,我就简单的模仿了一下,效果自己可以下载个看看,好了不多说了,下面说代码,这里面用到的关键就是startActivityForResult这个方法。
首先我们要做一个TextView或者button来点击触发地区选择,我是分3个activity 来实现的,分别显示省,市,区三个级别,只有每层用startActivityForResult的方法返回数据,下面贴出代码省的Activity
package com.example.sqgl.boat;
import java.util.List;
import org.json.JSONException;
import org.json.JSONObject;
import com.example.gkdemo.adapter.DiqulistAdapter;
import com.example.sqgl.R;
import com.example.sqgl.util.AlertKit;
import com.example.sqgl.util.ProgressDialogUtils;
import com.example.sqgl.util.TcGlobalConstant;
import com.example.sqgl.util.TcJsonUtils;
import com.example.sqgl.util.TcRegisRunnable;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class DiquActivity extends Activity{
private ListView list_diqusheng;
private String[] sheng;
private String[] shengid;
private static final int DIQU = 122345;
private static final int HJD = 122346;
private static final int XZD = 122347;
private static final int DYXZ = 342343;
private Bundle bundle;
private String id,name,name2,name3,type;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_diqu);
bundle = this.getIntent().getExtras();
type = bundle.getString("type");
list_diqusheng=(ListView) findViewById(R.id. list_diqusheng);
getdata2();
}
private void getdata2() {
// TODO Auto-generated method stub
// ProgressDialogUtils.createProgressDialog(this);
new Thread(new TcRegisRunnable(handler,
TcGlobalConstant.Result.addren)).start();
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
ProgressDialogUtils.closeProgressDialog();
if (msg.what == TcGlobalConstant.Result.failed) {
AlertKit.showAlertDialog(DiquActivity.this,
TcGlobalConstant.Result.progresstitle,
TcGlobalConstant.Result.failed_msg,
TcGlobalConstant.Result.progress_ok, null);
return;
}
switch (msg.what) {
case TcGlobalConstant.Result.addren:
try {
JSONObject obj = (JSONObject) msg.obj;
String string = obj.getString("result");
String content = obj.getString("msg");
if (string.equals("true")) {
final List<String[]> loginstring = TcJsonUtils
.addren(obj.getJSONObject("data"));
sheng=loginstring.get(14);
shengid=loginstring.get(15);
DiqulistAdapter adapter=new DiqulistAdapter(DiquActivity.this, sheng);
list_diqusheng.setAdapter(adapter);
list_diqusheng.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0,
View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
Intent intent = new Intent(
DiquActivity.this,
DiqushiActivity.class);
Bundle bundle = new Bundle();
bundle.putString("id",shengid[arg2]);
bundle.putString("name",sheng[arg2]);
bundle.putString("type",type);
intent.putExtras(bundle);
if (type.equals("1")) {
startActivityForResult(intent, DIQU);
}
}
});
} else {
Log.i("消息阅读", "c失败");
ProgressDialogUtils.closeProgressDialog();
Toast.makeText(getApplicationContext(), "日志调取出错", 1)
.show();
}
} catch (JSONException e) {
Log.d("消息阅读", "失败");
}
break;
default:
break;
}
}
};
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
android.util.Log.e("onTabActivityResult", "onActivityResult");
Log.v("resultCode", resultCode + "");
Log.v("requestCode", requestCode +