成都网站建设设计

将想法与焦点和您一起共享

android下拉列表,android下拉列表的值如何传递到数据库

如何打造Android自定义的下拉列表框控件

一、概述

创新互联公司2013年开创至今,是专业互联网技术服务公司,拥有项目网站设计制作、成都网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元五河做网站,已为上家服务,为五河各地企业和个人服务,联系电话:18980820575

Android中的有个原生的下拉列表控件Spinner,但是这个控件有时候不符合我们自己的要求,

比如有时候我们需要类似windows 或者web网页中常见的那种下拉列表控件,类似下图这样的:

这个时候只有自己动手写一个了。其实实现起来不算很难,

本文实现的方案是采用TextView +ImageView+PopupWindow的组合方案。

先来看看我们的自己写的控件效果图吧:(源码在文章下面最后给出哈!)

二、自定义下拉列表框控件的实现

1. 自定义控件用到的布局文件和资源:

结果框的布局页面:dropdownlist_view.xml:

?xml version="1.0" encoding="utf-8"?

RelativeLayout xmlns:android=""

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal"

android:id="@+id/compound"

android:background="@drawable/dropdown_bg_selector"

TextView

android:id="@+id/text"

android:layout_width="250dp"

android:layout_height="40dp"

android:paddingLeft="10dp"

android:text="文本文字"

android:gravity="center_vertical"

android:textSize="14sp"

android:padding="5dp"

android:singleLine="true" /

ImageView

android:id="@+id/btn"

android:layout_width="30dp"

android:layout_height="30dp"

android:layout_toRightOf="@+id/text"

android:src="@drawable/dropdown"

android:padding="5dp"

android:layout_centerVertical="true"

android:gravity="center"/

/RelativeLayout

下拉弹窗列表布局页面:dropdownlist_popupwindow.xml:

?xml version="1.0" encoding="utf-8"?

LinearLayout xmlns:android=""

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

ListView

android:id="@+id/listView"

android:layout_width="280dp"

android:layout_height="wrap_content"

android:divider="#666666"

android:dividerHeight="1dp"

/ListView

/LinearLayout

selector资源文件:

dropdown_list_selector.xml:

?xml version="1.0" encoding="utf-8"?

selector xmlns:android=""

item android:state_pressed="true" android:drawable="@color/dropdownlist_item_press"/

item android:drawable="@color/dropdownlist_item"/

/selector

dropdown_bg_selector.xml:

?xml version="1.0" encoding="utf-8"?

selector xmlns:android=""

item android:state_pressed="true" android:drawable="@color/dropdownlist_press"/

item android:drawable="@color/dropdownlist_bg"/

/selector

2. 自定义下拉列表框控件类的实现:

我们采用了TextView+ImageView+PopupWindow的组合方案,所以我的自定义控件需要重写ViewGroup,由于我们已经知道了,布局方向为竖直方向,所以这里,

我直接继承LinearLayout来写这个控件。具体实现代码如下:

package com.czm.xcdropdownlistview;

import java.util.ArrayList;

import android.annotation.SuppressLint;

import android.content.Context;

import android.util.AttributeSet;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.ListView;

import android.widget.PopupWindow;

import android.widget.TextView;

@SuppressLint("NewApi")

/**

* 下拉列表框控件

* @author caizhiming

*

*/

public class XCDropDownListView extends LinearLayout{

private TextView editText;

private ImageView imageView;

private PopupWindow popupWindow = null;

private ArrayListString dataList = new ArrayListString();

private View mView;

public XCDropDownListView(Context context) {

this(context,null);

// TODO Auto-generated constructor stub

}

public XCDropDownListView(Context context, AttributeSet attrs) {

this(context, attrs,0);

// TODO Auto-generated constructor stub

}

public XCDropDownListView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

// TODO Auto-generated constructor stub

initView();

}

public void initView(){

String infServie = Context.LAYOUT_INFLATER_SERVICE;

LayoutInflater layoutInflater;

layoutInflater = (LayoutInflater) getContext().getSystemService(infServie);

View view = layoutInflater.inflate(R.layout.dropdownlist_view, this,true);

editText= (TextView)findViewById(R.id.text);

imageView = (ImageView)findViewById(R.id.btn);

this.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

if(popupWindow == null ){

showPopWindow();

}else{

closePopWindow();

}

}

});

}

/**

* 打开下拉列表弹窗

*/

private void showPopWindow() {

// 加载popupWindow的布局文件

String infServie = Context.LAYOUT_INFLATER_SERVICE;

LayoutInflater layoutInflater;

layoutInflater = (LayoutInflater) getContext().getSystemService(infServie);

View contentView = layoutInflater.inflate(R.layout.dropdownlist_popupwindow, null,false);

ListView listView = (ListView)contentView.findViewById(R.id.listView);

listView.setAdapter(new XCDropDownListAdapter(getContext(), dataList));

popupWindow = new PopupWindow(contentView,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);

popupWindow.setBackgroundDrawable(getResources().getDrawable(R.color.transparent));

popupWindow.setOutsideTouchable(true);

popupWindow.showAsDropDown(this);

}

/**

* 关闭下拉列表弹窗

*/

private void closePopWindow(){

popupWindow.dismiss();

popupWindow = null;

}

/**

* 设置数据

* @param list

*/

public void setItemsData(ArrayListString list){

dataList = list;

editText.setText(list.get(0).toString());

}

/**

* 数据适配器

* @author caizhiming

*

*/

class XCDropDownListAdapter extends BaseAdapter{

Context mContext;

ArrayListString mData;

LayoutInflater inflater;

public XCDropDownListAdapter(Context ctx,ArrayListString data){

mContext = ctx;

mData = data;

inflater = LayoutInflater.from(mContext);

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return mData.size();

}

@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

return null;

}

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

// TODO Auto-generated method stub

// 自定义视图

ListItemView listItemView = null;

if (convertView == null) {

// 获取list_item布局文件的视图

convertView = inflater.inflate(R.layout.dropdown_list_item, null);

listItemView = new ListItemView();

// 获取控件对象

listItemView.tv = (TextView) convertView

.findViewById(R.id.tv);

listItemView.layout = (LinearLayout) convertView.findViewById(R.id.layout_container);

// 设置控件集到convertView

convertView.setTag(listItemView);

} else {

listItemView = (ListItemView) convertView.getTag();

}

// 设置数据

listItemView.tv.setText(mData.get(position).toString());

final String text = mData.get(position).toString();

listItemView.layout.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

editText.setText(text);

closePopWindow();

}

});

return convertView;

}

}

private static class ListItemView{

TextView tv;

LinearLayout layout;

}

}

三、如何使用该自定义下拉列表框控件

使用该控件和使用普通的自带的控件一样,首先需要在布局文件中引用该控件:

RelativeLayout xmlns:android=""

xmlns:tools=""

android:id="@+id/container"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.czm.xcdropdownlistview.MainActivity"

tools:ignore="MergeRootFrame"

com.czm.xcdropdownlistview.XCDropDownListView

android:id="@+id/drop_down_list_view"

android:layout_marginTop="10dp"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true" /

/RelativeLayout

其次,就是在代码中使用该控件:

package com.czm.xcdropdownlistview;

import java.util.ArrayList;

import android.app.Activity;

import android.os.Bundle;

/**

* 使用下拉列表框控件 示例

* @author caizhiming

*

*/

public class MainActivity extends Activity {

XCDropDownListView dropDownListView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

dropDownListView = (XCDropDownListView)findViewById(R.id.drop_down_list_view);

ArrayListString list = new ArrayListString();

for(int i = 0;i 6;i++){

list.add("下拉列表项"+(i+1));

}

dropDownListView.setItemsData(list);

}

}

对了,这个控件中,我没有实现点击item项回调接口,这个可能对有些写惯了回调的可能觉得少了写什么的感觉,有兴趣的你可以自己添加相关回调操作哈,这个大家应该都会把。

android中如何将下拉列表中获取的值放到编辑框中

1.下拉列表使用Spinner。

2.布局:

Spinner android:id="@+id/Spinner01"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/Spinner

3.实现

1)新增选择内容:String[] m={"A型","B型","O型","AB型","其他"};

2)初始化设配器:

private ArrayAdapterString adapter = new ArrayAdapterString(this,android.R.layout.simple_spinner_item,m);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //设置下拉列表的风格

spinner.setAdapter(adapter);//将adapter 添加到spinner中

spinner.setOnItemSelectedListener(new SpinnerSelectedListener()); //添加事件Spinner事件监听

3)新建Spinner监听器

class SpinnerSelectedListener implements OnItemSelectedListener{

public void onItemSelected(AdapterView? arg0, View arg1, int arg2,

long arg3) {

view.setText("你选择的值:"+m[arg2]);//设置编辑框为获取到的选择值

}

public void onNothingSelected(AdapterView? arg0) {

}

}

Android 下拉列表Spinner

在UI中经常会使用到下拉列表,在android控件中有两个下拉列表控件:

在xml中添加控件的使用:

主题:

这些都没有达到我要的效果:

android:entries // 传入的是values文件夹下的arrayx.xml内的数据

android:spinnerMode //显示模式有popmenu和dialog两种

android:prompt //当显示模式为dialog时生效,作用为显示dialog的标题内容

如何将Android数据库中表格的某一列在下拉列表中显示

请参考SDK下APIDemo例子,里面有详细的介绍,路径platforms/android-4(我的是1.6的)/samples/ApiDemos

,打开应用操作步骤如下Views--List,里面有很多中列表,你自己选择;

关于新建item,如果你要实现自己的样式,可以自定Adapter;你提问中android.R.layout.simple_spinner_item和别人的item是一个作用,就是列表中每一行的样式,有什么问题再hi我

android怎样自定义设置下拉列表样式

图样:

实现方式:

1、水平布局一个TextView和一个ImageView(小黑箭头)

2、实现点击ImageView的单击事件,弹出PopupWindow

3、PopupWindow中实现下拉列表

关键代码示例:

1、布局

LinearLayout android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal"

TextView/

ImageView /

/LinearLayout

2、单击事件

image.setBackgroundResource(R.drawable.gerendang_jiantou);  

image.setOnClickListener(new OnClickListener() {  

public void onClick(View v) {

//弹出popupwindow

}

});

3、pupupwindow相关代码

ListView lv = new ListView(this);

adapter = new OptionsAdapter(context, datas); // 根据数据,设置下拉框显示  

list.setAdapter(adapter);  

/** 

* 两种不同长度的下拉框,主要是为了适应屏幕的大小 

*/  

if (p_width  0) {  

pWindow = new PopupWindow(v, par.getWidth(), 150);  

} else {  

pWindow = new PopupWindow(v, par.getWidth(), 300);  

}  

pWindow.setFocusable(true);  //能够焦点获得

pWindow.setBackgroundDrawable(new BitmapDrawable());  //设置背景

pWindow.setOutsideTouchable(true);  //外部点击关闭

pWindow.update();  //更新位置

pWindow.showAsDropDown(text);//显示下拉列表

怎么改变android spinner下拉列表的宽度

设置spinner下拉菜单的宽度可在布局文件中添加如下语句:

android:dropDownWidth="100dp"

其中,100dp就是下拉菜单的宽度值,单位为像素。

Spinner控件是一种列表类型的控件,它的继承关系如下:

java.lang.Object

↳ android.view.View

↳ android.view.ViewGroup

↳ android.widget.AdapterViewTextends android.widget.Adapter

↳ android.widget.AbsSpinner

↳ android.widget.Spinner

android.widget.Spinner继承了android.view.ViewGroup类。


网站名称:android下拉列表,android下拉列表的值如何传递到数据库
分享URL:http://chengdu.cdxwcx.cn/article/dscdpcg.html