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

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

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

一:Android studio

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

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
repositories {
jcenter()
mavenCentral()//apllay // add plugin
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
} allprojects {
repositories {
jcenter()
}
} task clean(type: Delete) {
delete rootProject.buildDir
}

build.gradle

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

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

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

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

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


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

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

build.gradle

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

12-26 02:45:25.969 5267-5334/zhu.com.sprnner_cbo W/System.err: java.net.SocketException: Permission denied
12-26 02:45:25.970 5267-5334/zhu.com.sprnner_cbo W/System.err: at java.net.Socket.createImpl(Socket.java:473)
12-26 02:45:25.970 5267-5334/zhu.com.sprnner_cbo W/System.err: at java.net.Socket.getImpl(Socket.java:536)
12-26 02:45:25.971 5267-5334/zhu.com.sprnner_cbo W/System.err: at java.net.Socket.setSoTimeout(Socket.java:1127)
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)
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)
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)
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)
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)
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)
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-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)
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)
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)
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)
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)
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)
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)
12-26 02:45:25.974 5267-5334/zhu.com.sprnner_cbo W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
12-26 02:45:25.975 5267-5334/zhu.com.sprnner_cbo W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
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)
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的方法了

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

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

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~··

Tbmep

package com.example.pearl.customdropdownbox;

import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Generated;
import org.json.JSONObject; /**
* Created by Pearl on 2017/12/27.
*/ @Entity
public class Tbmep {
@Id
private Long did;
private String dname;
@Generated(hash = 1103728403)
public Tbmep(Long did, String dname) {
this.did = did;
this.dname = dname;
}
@Generated(hash = 1857599075)
public Tbmep() {
}
public Long getDid() {
return this.did;
}
public void setDid(Long did) {
this.did = did;
}
public String getDname() {
return this.dname;
}
public void setDname(String dname) {
this.dname = dname;
}
// 将json ==>转化为 Bean的对象(即Tb_Cbo_CLDL的对象)
public static Tbmep json_To_Bean(JSONObject object){
try {
return new Tbmep(object.getLong("did"),
object.getString("dname")
);
}catch (Exception e){ }
return null;
}
}

2):界面

a):activity_cbo.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.pearl.customdropdownbox.CBOActivity"> <RelativeLayout
android:id="@+id/relativelayout"
android:padding="2dp"
android:layout_width="wrap_content"
android:layout_height="42dp" >
<TextView
android:id="@+id/kj_tv_tbmep"
android:background="@drawable/etitext_frame_radiuo"
android:layout_width="130dp"
android:layout_height="35dp"
android:layout_centerVertical="true"
android:gravity="left|center"
android:hint="~部门~"
android:paddingLeft="10dp"
android:textColor="#ff000000"
android:textSize="11sp" >
</TextView>
<LinearLayout
android:id="@+id/bt_dropdown"
android:layout_width="25dp"
android:layout_height="match_parent"
android:layout_marginLeft="109dp"
android:gravity="center"
>
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:background="@drawable/btn_click_radius_press" />
</LinearLayout>
</RelativeLayout> </RelativeLayout>

b):spiner_item_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#00000000"
android:minHeight="40dp"> <TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#00000000"
android:gravity="center"
android:textColor="@color/text_yellow"
android:textSize="18sp" />
<TextView
android:id="@+id/text_provinceId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#00000000"
android:gravity="center"
android:visibility="invisible"
android:textColor="@color/text_yellow"
android:textSize="18sp" />
</RelativeLayout>

spiner_listview_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:background="#ffffff"
android:orientation="vertical"> <ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/sprinner_line_background"
android:cacheColorHint="#00000000"
android:scrollbars="none"></ListView> </LinearLayout>

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

a):values的设置

b)drawable的设置

btn_click_radius_press.xml

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

btn_press.xml

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

btn_radius.xml

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

etitext_frame_radiuo.xml

<?xml version="1.0" encoding="utf-8" ?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp"> <padding
android:bottom="5dp"
android:left="5dp"
android:right="5dp"
android:top="5dp" />
<!-- 设置圆角矩形 -->
<corners android:radius="7dp" /> <stroke
android:width="5px"
android:color="#1199EF" /> </shape>

sprinner_line_background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
> <stroke
android:width="0.01dp"
android:color="#C6C7CE" />
<padding
android:bottom="5dp"
/>
<solid android:color="@android:color/holo_red_dark">
</solid><!--solid是一个填充的的颜色-->
<stroke android:width="1dp"
android:color="#A3AAAA">
</stroke>
<corners android:radius="5dp"/>
</shape>

3):代码

MyBaseAdapter 
package com.example.pearl.customdropdownbox;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView; import java.util.List; /**
* Created by XiaoZhu on 2017/9/26.
*/ public class MyBaseAdapter extends BaseAdapter { public static interface IOnItemSelectListener {
public void onItemClick(int pos);
} ; private List<String> mObjects; private LayoutInflater mInflater; public MyBaseAdapter(Context context, List<String> mObjects) {
this.mObjects = mObjects;
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
} public void refreshData(List<String> objects, int selIndex) {
mObjects = objects;
if (selIndex < 0) {
selIndex = 0;
}
if (selIndex >= mObjects.size()) {
selIndex = mObjects.size() - 1;
}
} @Override//在此适配器中所代表的数据集的条目数
public int getCount() { return mObjects.size();
} @Override//获取数据集中与指定索引对应的数据项
public Object getItem(int pos) {
return mObjects.get(pos).toString();
} @Override//取在列表中与指定索引对应的行id
public long getItemId(int pos) {
return pos;
} @Override //下面的是重点
public View getView(int pos, View convertView, ViewGroup arg2) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = mInflater.inflate( R.layout.spiner_item_layout, null);
viewHolder = new ViewHolder();
viewHolder.mTextView = (TextView) convertView.findViewById(R.id.textView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
} //Object item = getItem(pos);
viewHolder.mTextView.setText(mObjects.get(pos)); return convertView;
} public static class ViewHolder {
public TextView mTextView;
} }

SpinerPopWindow

package com.example.pearl.customdropdownbox;

import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.PopupWindow; import java.util.List; /**
* Created by XiaoZhu on 2017/12/12.
*/ public class SpinerPopWindow extends PopupWindow implements AdapterView.OnItemClickListener { private Context mContext;
private ListView mListView;
private MyBaseAdapter mAdapter;
private MyBaseAdapter.IOnItemSelectListener mItemSelectListener; public SpinerPopWindow(Context context) {
super(context); mContext = context;
init();
} public void setItemListener(MyBaseAdapter.IOnItemSelectListener listener) {
mItemSelectListener = listener;
} public void setAdatper(MyBaseAdapter adapter) {
mAdapter = adapter;
mListView.setAdapter(mAdapter);
} private void init() {
View view = LayoutInflater.from(mContext).inflate(R.layout.spiner_listview_layout, null);
setContentView(view);
setWidth(LayoutParams.WRAP_CONTENT);
setHeight(LayoutParams.WRAP_CONTENT); setFocusable(true);
ColorDrawable dw = new ColorDrawable(0x00);
setBackgroundDrawable(dw); mListView = (ListView) view.findViewById(R.id.listview);
mListView.setOnItemClickListener(this);
} public void refreshData(List<String> list, int selIndex) {
if (list != null && selIndex != -1) {
if (mAdapter != null) {
mAdapter.refreshData(list, selIndex);
}
}
} @Override
public void onItemClick(AdapterView<?> arg0, View view, int pos, long arg3) {
dismiss();
if (mItemSelectListener != null) {
mItemSelectListener.onItemClick(pos);
}
} }

CBOActivity

package com.example.pearl.customdropdownbox;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.RelativeLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast; import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler; import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject; import java.io.Serializable;
import java.util.ArrayList;
import java.util.List; import cz.msebera.android.httpclient.Header; public class CBOActivity extends Activity implements View.OnClickListener ,MyBaseAdapter.IOnItemSelectListener {
private List< String> list_Tbmep =null;
private TextView tv_sprnner_Tbmep;
private MyBaseAdapter mAdapter;
private RelativeLayout relativeLayout;
private SpinerPopWindow mSpinerPopWindow;
private List<Tbmep> list_cboTbmep=null;
private long TbmepID=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cbo);
relativeLayout = (RelativeLayout) findViewById(R.id.relativelayout);
relativeLayout.setOnClickListener(this);//自已下拉框
tv_sprnner_Tbmep= (TextView) findViewById(R.id.kj_tv_tbmep);
} @Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.relativelayout:
cbo_tbmep();
break; }
} @Override
public void onItemClick(int pos) {
TbmepID =list_cboTbmep.get((int) pos).getDid();
String value = list_Tbmep.get(pos);
tv_sprnner_Tbmep.setText(value.toString());
} public void cbo_tbmep(){
AsyncHttpClient client =new AsyncHttpClient();
//第一个参数是访问 后台的路径,第二是:参数根据 id获取 string 查询数据 ,第三个:回调函数
client.get("http://192.168.191.2:8080/2017_1214_cbo/Binding_Cbo/android_cbo.json", null, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
if (statusCode==200){
try {
JSONObject object = new JSONObject(new String(responseBody));//获取json数据
JSONArray jsonArray = object.getJSONArray("cbo_bm");//获取数据集名称为obj的数据
Log.d("jsonArray数据输出:", String.valueOf(jsonArray));
list_cboTbmep = new ArrayList<>();
for(int i=0;i<jsonArray.length();i++){
JSONObject json_one=jsonArray.getJSONObject(i);
//把 json 转换为 ==》bean的对象形式
//方法1;
Tbmep cbo=Tbmep.json_To_Bean(json_one); if (cbo!=null){
list_cboTbmep.add(cbo);//把对象放入 list的数组中
}
}
if (jsonArray.length() > 0) {
// TbmepID = list_cboTbmep.get(0).getDid();
list_Tbmep = new ArrayList< String >();
for (int i = 0; i < list_cboTbmep.size(); i++) {
Tbmep section = list_cboTbmep.get(i);
list_Tbmep.add(section.getDname()); } }
mAdapter=new MyBaseAdapter(CBOActivity.this,list_Tbmep);
mAdapter.refreshData(list_Tbmep, 0);
//初始化PopWindow
mSpinerPopWindow = new SpinerPopWindow(CBOActivity.this);
mSpinerPopWindow.setAdatper(mAdapter);
mSpinerPopWindow.setItemListener(CBOActivity.this);
showSpinWindow();//显示SpinerPopWindow
} catch (JSONException e) {
Toast.makeText(CBOActivity.this, "下拉框加载失败!", Toast.LENGTH_SHORT).show();
}
mAdapter.notifyDataSetChanged();// 数据加载 完毕, 通知列表去更新
}else if(statusCode==400){
Toast.makeText(CBOActivity.this, "若返回值400,则是返回网络异常!", Toast.LENGTH_SHORT).show();
}
} @Override
public void onFailure(int statusCode,cz.msebera.android.httpclient.Header[] headers, byte[] responseBody, Throwable error) { }
}) ; }
//设置PopWindow
private void showSpinWindow() {
//设置mSpinerPopWindow显示的宽度
mSpinerPopWindow.setWidth(relativeLayout.getWidth());
//设置显示的位置在哪个控件的下方
mSpinerPopWindow.showAsDropDown(relativeLayout);
}
}

运行效果:

源码: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. JNI中java类型的简写

      在JNI中,当我们使用GetFieldID/GetStaticFieldID或GetMethodID/GetStaticMethodID及定义JNINativeMethod等时,我们需要表示成员变 ...

  2. Android Jni 调用

    Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 Chap 3:javah命令帮助信息... 16 Chap 4:用javah产生一个.h文件... 17 Chap5:j ...

  3. Python TurtleWorld configuration and simple test

    TurtleWorld provides a set of functions for drawing lines by steering turtles around the screen. You ...

  4. Linux安装PHP和MySQL

    Linux上安装php运行环境稍微比Windows复杂,没有Windows那么方便的集成环境.技术在于折腾嘛 Linux 版本的可以参考之前发布的Linux安装PHP MongoDB扩展 安装环境 系 ...

  5. PowerDesigner怎么调出工具箱?

    PowerDesigner怎么调出工具箱? 如图操作:

  6. 索引-mysql索引创建、查看、删除及使用示例

    mysql索引创建.查看.删除及使用示例 1.创建索引: ALTER TABLE用来创建普通索引.UNIQUE索引或PRIMARY KEY索引. ALTER TABLE table_name ADD ...

  7. hadoop ha

    https://blog.csdn.net/daydayup_668819/article/details/70815335 https://www.jianshu.com/p/8a6cc2d7206 ...

  8. [HNOI2012]矿场搭建(割点)

    [HNOI2012]矿场搭建 题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出 ...

  9. HDU 4928 Series 2

    有了题解以后这题就成了一个模拟题.不过写了好久才把它写对…… Sad #include <iostream> #include <cstdio> #include <cs ...

  10. GenIcam标准关键词整理

    1.<?xml> 版本信息和编码方式 IntSwissKnife 需计算和判断的节点 MaskedIntReg 需查询的节点 2.<RegisterDescription> 寄 ...