模仿手机淘宝客户端新增地址中的地区选择

该博客介绍了如何模仿手机淘宝客户端的地区选择功能。作者通过3个独立的Activity分别展示省、市、区三级选择,并利用startActivityForResult方法传递数据。文章提供了核心代码示例,着重讲解了实现这一功能的关键步骤。
摘要由CSDN通过智能技术生成

最近在做一个地区选择的项目,找了很多都不是很理想,昨天发现淘宝手机客户端新增地址地区选择很不错,我就简单的模仿了一下,效果自己可以下载个看看,好了不多说了,下面说代码,这里面用到的关键就是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 + 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值