原创作品,允许转载,转载时请务必声明作者信息和本声明。http://www.cnblogs.com/zhu520/p/8031936.html

本人小白,那个大神看到有问题可指出,谢谢。。。。

这个是接着之前的 android+myeclipse+mysql下拉框数据绑定 的服务器(后台)来做的,所以这里就只给 Android的代码,如果想要服务器的代码去 android+myeclipse+mysql下拉框数据绑定找就好了

一:Android studio

  • 1);先进行准备前工作先 在build.gradle四个地方要加入代码

  1. // Top-level build file where you can add configuration options common to all sub-projects/modules.
  2.  
  3. buildscript {
  4. repositories {
  5. jcenter()
  6. mavenCentral()//apllay // add plugin
  7. }
  8. dependencies {
  9. classpath 'com.android.tools.build:gradle:2.3.3'
  10. classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
  11. // NOTE: Do not place your application dependencies here; they belong
  12. // in the individual module build.gradle files
  13. }
  14. }
  15.  
  16. allprojects {
  17. repositories {
  18. jcenter()
  19. }
  20. }
  21.  
  22. task clean(type: Delete) {
  23. delete rootProject.buildDir
  24. }

build.gradle

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  1. // 这个非常重要,会生成Dao的类
    greendao { //add plugin
    schemaVersion 2
    //生成greedao的对象类的路径
  1. 设置DaoMaster,DaoSession,Dao包的路径,我不太喜欢它原来的路径,每次找都很麻烦,所以把它放在一个自己方便看的路径下来,你也可以不要下面这两句!
    daoPackage 'zhu.com.sprnner_cbo.greendao'
    targetGenDir 'src/main/java'//保存到java代码路径 ==》这句你可以不要
    }

如果没有这俩句,那么DaoMaster,DaoSession,Dao的原路径是在这里的

有这俩句,那么DaoMaster,DaoSession,Dao那么路径挺好找的

  1.  

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  1. apply plugin: 'com.android.application'
  2. apply plugin: 'org.greenrobot.greendao'//add plugin
  3. android {
  4. compileSdkVersion 26
  5. buildToolsVersion "27.0.3"
  6. defaultConfig {
  7. applicationId "com.example.pearl.customdropdownbox"
  8. minSdkVersion 15
  9. targetSdkVersion 26
  10. versionCode 1
  11. versionName "1.0"
  12. testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
  13. }
  14. buildTypes {
  15. release {
  16. minifyEnabled false
  17. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  18. }
  19. }
  20. }
  21. // 这个非常重要,会生成Dao的类
  22. greendao { //add plugin
  23. schemaVersion 2
  24. //生成greedao的对象类的路径 ==》我不太喜欢它原来的路径,所以把它放在一个自己方便看的路径下来,所以这句你可以不要!
  25. daoPackage 'com.example.pearl.customdropdownbox.greendao'
  26. targetGenDir 'src/main/java'//保存到java代码路径 ==》这句你可以不要
  27. }
  28.  
  29. dependencies {
  30. compile fileTree(dir: 'libs', include: ['*.jar'])
  31. androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
  32. exclude group: 'com.android.support', module: 'support-annotations'
  33. })
  34. compile 'com.android.support:appcompat-v7:26.+'
  35. compile 'com.android.support.constraint:constraint-layout:1.0.2'
  36. testCompile 'junit:junit:4.12'
  37. compile 'com.loopj.android:android-async-http:1.4.9'// add library==》这个是添加 网络请求的插件
  38. compile 'org.greenrobot:greendao:3.2.2' // add library ==>这个是 添加 greedao插件
  39. }

build.gradle

a):因为需要网络的请求 所以 要必须 要在AndroidManifest.xml加一句代码,不加就会出现下面这种错误的情况

  1. 12-26 02:45:25.969 5267-5334/zhu.com.sprnner_cbo W/System.err: java.net.SocketException: Permission denied
  2. 12-26 02:45:25.970 5267-5334/zhu.com.sprnner_cbo W/System.err: at java.net.Socket.createImpl(Socket.java:473)
  3. 12-26 02:45:25.970 5267-5334/zhu.com.sprnner_cbo W/System.err: at java.net.Socket.getImpl(Socket.java:536)
  4. 12-26 02:45:25.971 5267-5334/zhu.com.sprnner_cbo W/System.err: at java.net.Socket.setSoTimeout(Socket.java:1127)
  5. 12-26 02:45:25.971 5267-5334/zhu.com.sprnner_cbo W/System.err: at cz.msebera.android.httpclient.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:116)
  6. 12-26 02:45:25.971 5267-5334/zhu.com.sprnner_cbo W/System.err: at cz.msebera.android.httpclient.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:157)
  7. 12-26 02:45:25.971 5267-5334/zhu.com.sprnner_cbo W/System.err: at cz.msebera.android.httpclient.conn.scheme.SchemeSocketFactoryAdaptor.connectSocket(SchemeSocketFactoryAdaptor.java:65)
  8. 12-26 02:45:25.972 5267-5334/zhu.com.sprnner_cbo W/System.err: at cz.msebera.android.httpclient.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:177)
  9. 12-26 02:45:25.972 5267-5334/zhu.com.sprnner_cbo W/System.err: at cz.msebera.android.httpclient.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:145)
  10. 12-26 02:45:25.972 5267-5334/zhu.com.sprnner_cbo W/System.err: at cz.msebera.android.httpclient.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:131)
  11. 12-26 02:45:25.972 5267-5334/zhu.com.sprnner_cbo W/System.err: at cz.msebera.android.httpclient.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:611)
  12. 12-26 02:45:25.973 5267-5334/zhu.com.sprnner_cbo W/System.err: at cz.msebera.android.httpclient.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:446)
  13. 12-26 02:45:25.973 5267-5334/zhu.com.sprnner_cbo W/System.err: at cz.msebera.android.httpclient.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:860)
  14. 12-26 02:45:25.973 5267-5334/zhu.com.sprnner_cbo W/System.err: at cz.msebera.android.httpclient.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
  15. 12-26 02:45:25.973 5267-5334/zhu.com.sprnner_cbo W/System.err: at com.loopj.android.http.AsyncHttpRequest.makeRequest(AsyncHttpRequest.java:146)
  16. 12-26 02:45:25.974 5267-5334/zhu.com.sprnner_cbo W/System.err: at com.loopj.android.http.AsyncHttpRequest.makeRequestWithRetries(AsyncHttpRequest.java:177)
  17. 12-26 02:45:25.974 5267-5334/zhu.com.sprnner_cbo W/System.err: at com.loopj.android.http.AsyncHttpRequest.run(AsyncHttpRequest.java:106)
  18. 12-26 02:45:25.974 5267-5334/zhu.com.sprnner_cbo W/System.err: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
  19. 12-26 02:45:25.974 5267-5334/zhu.com.sprnner_cbo W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
  20. 12-26 02:45:25.975 5267-5334/zhu.com.sprnner_cbo W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
  21. 12-26 02:45:25.975 5267-5334/zhu.com.sprnner_cbo W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
  22. 12-26 02:45:25.975 5267-5334/zhu.com.sprnner_cbo W/System.err: at java.lang.Thread.run(Thread.java:761)

错误情况

好了配置弄好剩下的就 很好解决了

b):设置实体类:

实体类 要根据返回的json中 相对于的key 一一对应

注意:   主键:id必须要设置Long的类型 ,切记 必须要加入  @Entity, 和@Id

设置好变量后 ,还有一个操作 设置 生成DaoMaster,DaoSession,Dao类的操作,这它就会自动补全我们实体类剩下的get和set的方法了

================生成的========》

  1. 最后在实体类中再加 一个方法 得到 服务器专递的json的数据
  2. // 将json ==>转化为 Bean的对象(即Tb_Cbo_CLDL的对象)
  3. public static Tbmep json_To_Bean(JSONObject object){
  4. try {
  5. return new Tbmep(object.getLong("did"),
  6. object.getString("dname")
  7. );
  8. }catch (Exception e){ }
  9. return null;
  10. }
  1.  
  2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~··

Tbmep

  1. package com.example.pearl.customdropdownbox;
  2.  
  3. import org.greenrobot.greendao.annotation.Entity;
  4. import org.greenrobot.greendao.annotation.Id;
  5. import org.greenrobot.greendao.annotation.Generated;
  6. import org.json.JSONObject;
  7.  
  8. /**
  9. * Created by Pearl on 2017/12/27.
  10. */
  11.  
  12. @Entity
  13. public class Tbmep {
  14. @Id
  15. private Long did;
  16. private String dname;
  17. @Generated(hash = 1103728403)
  18. public Tbmep(Long did, String dname) {
  19. this.did = did;
  20. this.dname = dname;
  21. }
  22. @Generated(hash = 1857599075)
  23. public Tbmep() {
  24. }
  25. public Long getDid() {
  26. return this.did;
  27. }
  28. public void setDid(Long did) {
  29. this.did = did;
  30. }
  31. public String getDname() {
  32. return this.dname;
  33. }
  34. public void setDname(String dname) {
  35. this.dname = dname;
  36. }
  37. // 将json ==>转化为 Bean的对象(即Tb_Cbo_CLDL的对象)
  38. public static Tbmep json_To_Bean(JSONObject object){
  39. try {
  40. return new Tbmep(object.getLong("did"),
  41. object.getString("dname")
  42. );
  43. }catch (Exception e){ }
  44. return null;
  45. }
  46. }

2):界面

a):activity_cbo.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. tools:context="com.example.pearl.customdropdownbox.CBOActivity">
  8.  
  9. <RelativeLayout
  10. android:id="@+id/relativelayout"
  11. android:padding="2dp"
  12. android:layout_width="wrap_content"
  13. android:layout_height="42dp" >
  14. <TextView
  15. android:id="@+id/kj_tv_tbmep"
  16. android:background="@drawable/etitext_frame_radiuo"
  17. android:layout_width="130dp"
  18. android:layout_height="35dp"
  19. android:layout_centerVertical="true"
  20. android:gravity="left|center"
  21. android:hint="~部门~"
  22. android:paddingLeft="10dp"
  23. android:textColor="#ff000000"
  24. android:textSize="11sp" >
  25. </TextView>
  26. <LinearLayout
  27. android:id="@+id/bt_dropdown"
  28. android:layout_width="25dp"
  29. android:layout_height="match_parent"
  30. android:layout_marginLeft="109dp"
  31. android:gravity="center"
  32. >
  33. <ImageView
  34. android:layout_width="20dp"
  35. android:layout_height="20dp"
  36. android:background="@drawable/btn_click_radius_press" />
  37. </LinearLayout>
  38. </RelativeLayout>
  39.  
  40. </RelativeLayout>

b):spiner_item_layout.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="wrap_content"
  5. android:background="#00000000"
  6. android:minHeight="40dp">
  7.  
  8. <TextView
  9. android:id="@+id/textView"
  10. android:layout_width="match_parent"
  11. android:layout_height="wrap_content"
  12. android:background="#00000000"
  13. android:gravity="center"
  14. android:textColor="@color/text_yellow"
  15. android:textSize="18sp" />
  16. <TextView
  17. android:id="@+id/text_provinceId"
  18. android:layout_width="match_parent"
  19. android:layout_height="wrap_content"
  20. android:background="#00000000"
  21. android:gravity="center"
  22. android:visibility="invisible"
  23. android:textColor="@color/text_yellow"
  24. android:textSize="18sp" />
  25. </RelativeLayout>

spiner_listview_layout.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="wrap_content"
  5. android:layout_alignParentRight="true"
  6. android:background="#ffffff"
  7. android:orientation="vertical">
  8.  
  9. <ListView
  10. android:id="@+id/listview"
  11. android:layout_width="match_parent"
  12. android:layout_height="wrap_content"
  13. android:background="@drawable/sprinner_line_background"
  14. android:cacheColorHint="#00000000"
  15. android:scrollbars="none"></ListView>
  16.  
  17. </LinearLayout>

需要用到 一些应用来设置界面

a):values的设置

b)drawable的设置

btn_click_radius_press.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">
  3. <item android:state_pressed="true" android:drawable="@drawable/btn_press"/>
  4. <item android:drawable="@drawable/btn_radius"/>
  5. </selector>
  6.  
  7. <!--要是button可以变色:
  8. 那么要把在btn_radius.xml的btn_bg和btn_press.xml没按的效果组合起来就可以进行变色的效果-->

btn_press.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:shape="rectangle">
  4. <solid android:color="@android:color/holo_red_dark">
  5. </solid><!--solid是一个填充的的颜色-->
  6. <stroke android:width="1dp"
  7. android:color="#A3AAAA">
  8. </stroke>
  9. <corners android:radius="5dp"/>
  10. </shape>
  11.  
  12. <!--这个是按的效果: 这个是定义进度条的时候使用 button 变色的情况-->

btn_radius.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:shape="rectangle">
  4. <solid android:color="@android:color/holo_green_light">
  5. </solid>
  6. <stroke android:width="1dp"
  7. android:color="#fff">
  8.  
  9. </stroke>
  10. <corners android:radius="5dp"/>
  11. </shape>

etitext_frame_radiuo.xml

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:shape="rectangle" android:padding="10dp">
  4.  
  5. <padding
  6. android:bottom="5dp"
  7. android:left="5dp"
  8. android:right="5dp"
  9. android:top="5dp" />
  10. <!-- 设置圆角矩形 -->
  11. <corners android:radius="7dp" />
  12.  
  13. <stroke
  14. android:width="5px"
  15. android:color="#1199EF" />
  16.  
  17. </shape>

sprinner_line_background.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:shape="rectangle"
  4. >
  5.  
  6. <stroke
  7. android:width="0.01dp"
  8. android:color="#C6C7CE" />
  9. <padding
  10. android:bottom="5dp"
  11. />
  12. <solid android:color="@android:color/holo_red_dark">
  13. </solid><!--solid是一个填充的的颜色-->
  14. <stroke android:width="1dp"
  15. android:color="#A3AAAA">
  16. </stroke>
  17. <corners android:radius="5dp"/>
  18. </shape>

3):代码

  1. MyBaseAdapter 
  1. package com.example.pearl.customdropdownbox;
  2.  
  3. import android.content.Context;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. import android.widget.BaseAdapter;
  8. import android.widget.TextView;
  9.  
  10. import java.util.List;
  11.  
  12. /**
  13. * Created by XiaoZhu on 2017/9/26.
  14. */
  15.  
  16. public class MyBaseAdapter extends BaseAdapter {
  17.  
  18. public static interface IOnItemSelectListener {
  19. public void onItemClick(int pos);
  20. }
  21.  
  22. ;
  23.  
  24. private List<String> mObjects;
  25.  
  26. private LayoutInflater mInflater;
  27.  
  28. public MyBaseAdapter(Context context, List<String> mObjects) {
  29. this.mObjects = mObjects;
  30. mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  31. }
  32.  
  33. public void refreshData(List<String> objects, int selIndex) {
  34. mObjects = objects;
  35. if (selIndex < 0) {
  36. selIndex = 0;
  37. }
  38. if (selIndex >= mObjects.size()) {
  39. selIndex = mObjects.size() - 1;
  40. }
  41. }
  42.  
  43. @Override//在此适配器中所代表的数据集的条目数
  44. public int getCount() {
  45.  
  46. return mObjects.size();
  47. }
  48.  
  49. @Override//获取数据集中与指定索引对应的数据项
  50. public Object getItem(int pos) {
  51. return mObjects.get(pos).toString();
  52. }
  53.  
  54. @Override//取在列表中与指定索引对应的行id
  55. public long getItemId(int pos) {
  56. return pos;
  57. }
  58.  
  59. @Override //下面的是重点
  60. public View getView(int pos, View convertView, ViewGroup arg2) {
  61. ViewHolder viewHolder;
  62. if (convertView == null) {
  63. convertView = mInflater.inflate( R.layout.spiner_item_layout, null);
  64. viewHolder = new ViewHolder();
  65. viewHolder.mTextView = (TextView) convertView.findViewById(R.id.textView);
  66. convertView.setTag(viewHolder);
  67. } else {
  68. viewHolder = (ViewHolder) convertView.getTag();
  69. }
  70.  
  71. //Object item = getItem(pos);
  72. viewHolder.mTextView.setText(mObjects.get(pos));
  73.  
  74. return convertView;
  75. }
  76.  
  77. public static class ViewHolder {
  78. public TextView mTextView;
  79. }
  80.  
  81. }

SpinerPopWindow

  1. package com.example.pearl.customdropdownbox;
  2.  
  3. import android.content.Context;
  4. import android.graphics.drawable.ColorDrawable;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.ViewGroup.LayoutParams;
  8. import android.widget.AdapterView;
  9. import android.widget.ListView;
  10. import android.widget.PopupWindow;
  11.  
  12. import java.util.List;
  13.  
  14. /**
  15. * Created by XiaoZhu on 2017/12/12.
  16. */
  17.  
  18. public class SpinerPopWindow extends PopupWindow implements AdapterView.OnItemClickListener {
  19.  
  20. private Context mContext;
  21. private ListView mListView;
  22. private MyBaseAdapter mAdapter;
  23. private MyBaseAdapter.IOnItemSelectListener mItemSelectListener;
  24.  
  25. public SpinerPopWindow(Context context) {
  26. super(context);
  27.  
  28. mContext = context;
  29. init();
  30. }
  31.  
  32. public void setItemListener(MyBaseAdapter.IOnItemSelectListener listener) {
  33. mItemSelectListener = listener;
  34. }
  35.  
  36. public void setAdatper(MyBaseAdapter adapter) {
  37. mAdapter = adapter;
  38. mListView.setAdapter(mAdapter);
  39. }
  40.  
  41. private void init() {
  42. View view = LayoutInflater.from(mContext).inflate(R.layout.spiner_listview_layout, null);
  43. setContentView(view);
  44. setWidth(LayoutParams.WRAP_CONTENT);
  45. setHeight(LayoutParams.WRAP_CONTENT);
  46.  
  47. setFocusable(true);
  48. ColorDrawable dw = new ColorDrawable(0x00);
  49. setBackgroundDrawable(dw);
  50.  
  51. mListView = (ListView) view.findViewById(R.id.listview);
  52. mListView.setOnItemClickListener(this);
  53. }
  54.  
  55. public void refreshData(List<String> list, int selIndex) {
  56. if (list != null && selIndex != -1) {
  57. if (mAdapter != null) {
  58. mAdapter.refreshData(list, selIndex);
  59. }
  60. }
  61. }
  62.  
  63. @Override
  64. public void onItemClick(AdapterView<?> arg0, View view, int pos, long arg3) {
  65. dismiss();
  66. if (mItemSelectListener != null) {
  67. mItemSelectListener.onItemClick(pos);
  68. }
  69. }
  70.  
  71. }

CBOActivity

  1. package com.example.pearl.customdropdownbox;
  2.  
  3. import android.app.Activity;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. import android.util.Log;
  7. import android.view.View;
  8. import android.widget.AdapterView;
  9. import android.widget.ArrayAdapter;
  10. import android.widget.RelativeLayout;
  11. import android.widget.Spinner;
  12. import android.widget.TextView;
  13. import android.widget.Toast;
  14.  
  15. import com.loopj.android.http.AsyncHttpClient;
  16. import com.loopj.android.http.AsyncHttpResponseHandler;
  17.  
  18. import org.json.JSONArray;
  19. import org.json.JSONException;
  20. import org.json.JSONObject;
  21.  
  22. import java.io.Serializable;
  23. import java.util.ArrayList;
  24. import java.util.List;
  25.  
  26. import cz.msebera.android.httpclient.Header;
  27.  
  28. public class CBOActivity extends Activity implements View.OnClickListener ,MyBaseAdapter.IOnItemSelectListener {
  29. private List< String> list_Tbmep =null;
  30. private TextView tv_sprnner_Tbmep;
  31. private MyBaseAdapter mAdapter;
  32. private RelativeLayout relativeLayout;
  33. private SpinerPopWindow mSpinerPopWindow;
  34. private List<Tbmep> list_cboTbmep=null;
  35. private long TbmepID=0;
  36. @Override
  37. protected void onCreate(Bundle savedInstanceState) {
  38. super.onCreate(savedInstanceState);
  39. setContentView(R.layout.activity_cbo);
  40. relativeLayout = (RelativeLayout) findViewById(R.id.relativelayout);
  41. relativeLayout.setOnClickListener(this);//自已下拉框
  42. tv_sprnner_Tbmep= (TextView) findViewById(R.id.kj_tv_tbmep);
  43. }
  44.  
  45. @Override
  46. public void onClick(View view) {
  47. switch (view.getId()) {
  48. case R.id.relativelayout:
  49. cbo_tbmep();
  50. break;
  51.  
  52. }
  53. }
  54.  
  55. @Override
  56. public void onItemClick(int pos) {
  57. TbmepID =list_cboTbmep.get((int) pos).getDid();
  58. String value = list_Tbmep.get(pos);
  59. tv_sprnner_Tbmep.setText(value.toString());
  60. }
  61.  
  62. public void cbo_tbmep(){
  63. AsyncHttpClient client =new AsyncHttpClient();
  64. //第一个参数是访问 后台的路径,第二是:参数根据 id获取 string 查询数据 ,第三个:回调函数
  65. client.get("http://192.168.191.2:8080/2017_1214_cbo/Binding_Cbo/android_cbo.json", null, new AsyncHttpResponseHandler() {
  66. @Override
  67. public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
  68. if (statusCode==200){
  69. try {
  70. JSONObject object = new JSONObject(new String(responseBody));//获取json数据
  71. JSONArray jsonArray = object.getJSONArray("cbo_bm");//获取数据集名称为obj的数据
  72. Log.d("jsonArray数据输出:", String.valueOf(jsonArray));
  73. list_cboTbmep = new ArrayList<>();
  74. for(int i=0;i<jsonArray.length();i++){
  75. JSONObject json_one=jsonArray.getJSONObject(i);
  76. //把 json 转换为 ==》bean的对象形式
  77. //方法1;
  78. Tbmep cbo=Tbmep.json_To_Bean(json_one);
  79.  
  80. if (cbo!=null){
  81. list_cboTbmep.add(cbo);//把对象放入 list的数组中
  82. }
  83. }
  84. if (jsonArray.length() > 0) {
  85. // TbmepID = list_cboTbmep.get(0).getDid();
  86. list_Tbmep = new ArrayList< String >();
  87. for (int i = 0; i < list_cboTbmep.size(); i++) {
  88. Tbmep section = list_cboTbmep.get(i);
  89. list_Tbmep.add(section.getDname());
  90.  
  91. }
  92.  
  93. }
  94. mAdapter=new MyBaseAdapter(CBOActivity.this,list_Tbmep);
  95. mAdapter.refreshData(list_Tbmep, 0);
  96. //初始化PopWindow
  97. mSpinerPopWindow = new SpinerPopWindow(CBOActivity.this);
  98. mSpinerPopWindow.setAdatper(mAdapter);
  99. mSpinerPopWindow.setItemListener(CBOActivity.this);
  100. showSpinWindow();//显示SpinerPopWindow
  101. } catch (JSONException e) {
  102. Toast.makeText(CBOActivity.this, "下拉框加载失败!", Toast.LENGTH_SHORT).show();
  103. }
  104. mAdapter.notifyDataSetChanged();// 数据加载 完毕, 通知列表去更新
  105. }else if(statusCode==400){
  106. Toast.makeText(CBOActivity.this, "若返回值400,则是返回网络异常!", Toast.LENGTH_SHORT).show();
  107. }
  108. }
  109.  
  110. @Override
  111. public void onFailure(int statusCode,cz.msebera.android.httpclient.Header[] headers, byte[] responseBody, Throwable error) {
  112.  
  113. }
  114. }) ;
  115.  
  116. }
  117. //设置PopWindow
  118. private void showSpinWindow() {
  119. //设置mSpinerPopWindow显示的宽度
  120. mSpinerPopWindow.setWidth(relativeLayout.getWidth());
  121. //设置显示的位置在哪个控件的下方
  122. mSpinerPopWindow.showAsDropDown(relativeLayout);
  123. }
  124. }

运行效果:

源码:http://download.csdn.net/download/qq_35812301/10176025

android+myeclipse+mysql自定义控件下拉框的数据绑定的更多相关文章

  1. (四十九)c#Winform自定义控件-下拉框(表格)

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  2. android模仿58筛选下拉框(PopupWindow实现)

    前言:前几天用58同城APP找房子的时候,看到筛选下拉框蛮不错的,然后也有很多朋友需要实现这个功能,于是从网上下载了一个demo,在他的基础上进行修改,花了几个小时对他的代码进行修改,重构,封装.把一 ...

  3. Android实现三级联动下拉框 下拉列表spinner

    Android实现(省.市.县)三级联动下拉框 下拉列表spinner 转载请注明出处: http://www.goteny.com/articles/2013/11/46.html http://w ...

  4. Android实现三级联动下拉框下拉列表spinner

    原文出处:http://www.cnblogs.com/zjjne/archive/2013/10/03/3350107.html 主要实现办法:动态加载各级下拉值的适配器 在监听本级下拉框,当本级下 ...

  5. Android UI自定义Spinner下拉框(用popuwindow实现)-转

    定义出第一个图片的布局和弹出框(一个listView)的布局,,这里就不在多说了~ListView需要自己定义一个MyspinnerAdapter~做好这些准备之后,就是弹出框的实现了~  prote ...

  6. 【Android】5.4 下拉框(Spinner)

    分类:C#.Android.VS2015: 创建日期:2016-02-07 下拉列表框Spinner的用法和WinForms中ComboBox的用法非常相似,在Android应用中使用频次也相当高,因 ...

  7. (三十五)c#Winform自定义控件-下拉框

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  8. android中自定义下拉框(转)

    android自带的下拉框好用不?我觉得有时候好用,有时候难有,项目规定这样的效果,自带的控件实现不了,那么只有我们自己来老老实实滴写一个新的了,其实最基本的下拉框就像一些资料填写时,点击的时候出现在 ...

  9. Android 第三方开源下拉框:NiceSpinner

    Android原生的下拉框Spinner基本上可以满足Android开发对于下拉选项的设计需求,但现在越来越流行的下拉框不满足于Android原生提供的下拉框Spinner所提供的设计样式,而改用自定 ...

随机推荐

  1. m_Orchestrate learning system---二十四、thinkphp里面的ajax如何使用

    m_Orchestrate learning system---二十四.thinkphp里面的ajax如何使用 一.总结 一句话总结:其实ajax非常简单:前台要做的事情就是发送ajax请求过来,后台 ...

  2. MySql-Error: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

    MySql-Error: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 标签( ...

  3. HDFS的配额

  4. C#篇(二)——属性的实质

    属性的内部实现其实就是方法 我们平时写的代码: class Student { private int age; public int Age { get { return age; } set { ...

  5. Android EditText+ListPopupWindow实现可编辑的下拉列表

    使用场景 AutoCompleteEditText只有开始输入并且与输入的字符有匹配的时候才弹出下拉列表.Spinner的缺点是不可以编辑.所以本文介绍如何使用EditText+ListPopupWi ...

  6. 【基础篇】Android中获取Drawable的方法

    public static Drawable getDrawable(Context context,String filename) { BitmapDrawable drawable=null; ...

  7. 关于node的聊天室错误

    Deprecationwarning:process,EventEmitter is deprecated use require ('events')instead 关于node的聊天室错误 > ...

  8. IHttpHandler的学习(1)

    IHttpHandler的那些事 今晚看了一晚上的IHttpHAndler的知识, 在自定义了Httphandler后,在配置webconfig里配置也是个技术活,什么集成模式,什么asp管道什么的: ...

  9. js文字的无缝滚动(上下)

    使用scrolltop值的递增配合setInterval与setTimeout实现相关效果,左右无缝滚动使用scrollLeft即可 Dom内容 <div id="container& ...

  10. echarts如何修改数据视图dataView中的样式

    原文链接:点我 做了一个现实折线图的图表,通过右上角icon可以自由切换成柱状图,表格.在表格中遇到的一点小问题,解决方案如下: 1.场景重现 这是一个显示两个折线图的图表,一切看起来都很顺利.但是点 ...