当前位置:  编程技术>移动开发
本页文章导读:
    ▪ArrayAdapter跟BaseAdapter的区别        ArrayAdapter和BaseAdapter的区别 近期很多Android开发者来函表示对ArrayAdapter和BaseAdapter的区别不是很清楚,这里Android123简单说下他们的关系和用处,ArrayAdapter是从BaseAdapter派生出来的,具备BaseAda.........
    ▪ ProgressDialog的1点经验        ProgressDialog的一点经验 在开发过程中发现这样的问题:   我是用的是圆形进度条对话框,在Acitivity中第一次调用显示这个圆形进度条对话框的时候,圆形进度条的显示一切正常。可是在将这.........
    ▪ AutoCompleteTextView 自动揭示输入       AutoCompleteTextView 自动提示输入 AutoCompleteTextView 自动提示输入  在我们平常上网的时候经常会用到谷歌或百度,在输入框中输入我们想要输入的信息就会出现其他与其相关的提示信息,非.........

[1]ArrayAdapter跟BaseAdapter的区别
    来源: 互联网  发布时间: 2014-02-18
ArrayAdapter和BaseAdapter的区别
近期很多Android开发者来函表示对ArrayAdapter和BaseAdapter的区别不是很清楚,这里Android123简单说下他们的关系和用处,ArrayAdapter是从BaseAdapter派生出来的,具备BaseAdapter的所有功能,但ArrayAdapter更为强大,它实例化时可以直接使用泛型构造,我们在Android SDK中可以看到android.widget.ArrayAdapter<T>的字样,当然也可以使用 ArrayAdapter(Context context, int textViewResourceId) 第二个参数直接绑定一个layout,下文的例子我们使用Java泛型实例化。

通过Adapter我们构造一个支持icon的item,下面我们在getView中使用的是imageView显示图片,当然android123提示大家其实TextView也可以直接绑定一个drawable对象显示的,void  setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom) 或void  setCompoundDrawablesWithIntrinsicBounds(int left, int top, int right, int bottom) 和void  setCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top, Drawable right, Drawable bottom) 即可,其中第二种的int类型指定的资源id,方位则是textview什么位置显示drawable对象

说了这么多ArrayAdapater一起看个例子,来实例化ArrayAdapter吧,我们可以修改Res/layout/icon_list_item.xml文件来实现自定义显示效果。

view plaincopy to clipboardprint?
01.public class IconListAdapter extends ArrayAdapter<IconListAdapter.IconListItem> {  
02.    protected LayoutInflater mInflater;  
03.    private static final int mResource = R.layout.icon_list_item; //xml布局文件  
04. 
05.    public IconListAdapter(Context context,  
06.            List<IconListItem> items) {  
07.        super(context, mResource, items);  
08.        mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
09.    }  
10. 
11.    @Override 
12.    public View getView(int position, View convertView, ViewGroup parent) {  
13.        TextView text;  
14.        ImageView image;  
15. 
16.        View view;  
17.        if (convertView == null) {  
18.            view = mInflater.inflate(mResource, parent, false);  
19.        } else {  
20.            view = convertView;  
21.        }  
22. 
23.        text = (TextView) view.findViewById(R.id.text1);  
24.        text.setText(getItem(position).getTitle());  
25. 
26.        image = (ImageView) view.findViewById(R.id.icon);  //可以使用上文说的三种方法,直接用TextView类的setCompoundDrawables等方法绑定图标显示  
27.        image.setImageResource(getItem(position).getResource());  
28. 
29.        return view;  
30.    }  
31. 
32.    public static class IconListItem {  //每条显示的构造方法  
33.        private final String mTitle;  
34.        private final int mResource;  
35. 
36.        public IconListItem(String title, int resource) {  
37.            mResource = resource;  
38.            mTitle = title;  
39.        }  
40. 
41.        public String getTitle() {  
42.            return mTitle;  
43.        }  
44. 
45.        public int getResource() {  
46.            return mResource;  
47.        }  
48.    }  
49.} 
public class IconListAdapter extends ArrayAdapter<IconListAdapter.IconListItem> {
    protected LayoutInflater mInflater;
    private static final int mResource = R.layout.icon_list_item; //xml布局文件

    public IconListAdapter(Context context,
            List<IconListItem> items) {
        super(context, mResource, items);
        mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        TextView text;
        ImageView image;

        View view;
        if (convertView == null) {
            view = mInflater.inflate(mResource, parent, false);
        } else {
            view = convertView;
        }

        text = (TextView) view.findViewById(R.id.text1);
        text.setText(getItem(position).getTitle());

        image = (ImageView) view.findViewById(R.id.icon);  //可以使用上文说的三种方法,直接用TextView类的setCompoundDrawables等方法绑定图标显示
        image.setImageResource(getItem(position).getResource());

        return view;
    }

    public static class IconListItem {  //每条显示的构造方法
        private final String mTitle;
        private final int mResource;

        public IconListItem(String title, int resource) {
            mResource = resource;
            mTitle = title;
        }

        public String getTitle() {
            return mTitle;
        }

        public int getResource() {
            return mResource;
        }
    }
}

当然对于ArrayAdapter到底比BaseAdapter先进到哪里呢?  从名称来看Array我们可以联系到数组的很多操作,没错Android123给大家列出本类所有成员方法实用的处理方式,比如:.

view plaincopy to clipboardprint?
01.void  add(T object)  //添加一个对象到本ArrayAdapter  
02. 
03.void  clear()  //清除所有元素  
04. 
05.static ArrayAdapter<CharSequence>  createFromResource(Context context, int textArrayResId, int textViewResId)  //从layout资源构造arrayadapter  
06. 
07.Context  getContext()  //获取实例  
08. 
09.int  getCount()   
10. 
11.View  getDropDownView(int position, View convertView, ViewGroup parent)  //获取drop down的popup风格选择条目的内容,参数1是位置,参数2可以通过强制转换直接获取本条的内容  
12. 
13.Filter  getFilter() //使用正则过滤数据   
14. 
15.T  getItem(int position)  //获取单条内容  
16. 
17.long  getItemId(int position)    
18. 
19.int  getPosition(T item) //通过内容获取是某条  
20. 
21.View  getView(int position, View convertView, ViewGroup parent)   
22. 
23.void  insert(T object, int index)  //插入新条目到数组的index位置  
24. 
25.void  notifyDataSetChanged()  //通知数据变化了,告诉绑定Adapter的widget来更新UI  
26. 
27.void  remove(T object)  //移出一条从数组,这里并没有指定位置  
28. 
29.void  setDropDownViewResource(int resource)  //设置dropdown的layout风格  
30.Sets the layout resource to create the drop down views.  
31. 
32.void  setNotifyOnChange(boolean notifyOnChange)  //本条是arrayadapter最强大的功能,android123强烈推荐处理大数据时使用该方法,可以降低ui的处理量,刷新ui可以更快速,主要可以停止对  
33.(add(T), insert(T, int), remove(T), clear() 的操作,当然可以通过 notifyDataSetChanged(). 或 setNotifyOnChange(true) 通知变化  
34. 
35.void  sort(Comparator<? super T> comparator)  //这里是android开发网经常用的排序,使用arrayadapter可以直接排序,十分方便 
void  add(T object)  //添加一个对象到本ArrayAdapter

void  clear()  //清除所有元素

static ArrayAdapter<CharSequence>  createFromResource(Context context, int textArrayResId, int textViewResId)  //从layout资源构造arrayadapter

Context  getContext()  //获取实例

int  getCount()

View  getDropDownView(int position, View convertView, ViewGroup parent)  //获取drop down的popup风格选择条目的内容,参数1是位置,参数2可以通过强制转换直接获取本条的内容

Filter  getFilter() //使用正则过滤数据

T  getItem(int position)  //获取单条内容

long  getItemId(int position) 

int  getPosition(T item) //通过内容获取是某条

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

void  insert(T object, int index)  //插入新条目到数组的index位置

void  notifyDataSetChanged()  //通知数据变化了,告诉绑定Adapter的widget来更新UI

void  remove(T object)  //移出一条从数组,这里并没有指定位置

void  setDropDownViewResource(int resource)  //设置dropdown的layout风格
Sets the layout resource to create the drop down views.

void  setNotifyOnChange(boolean notifyOnChange)  //本条是arrayadapter最强大的功能,android123强烈推荐处理大数据时使用该方法,可以降低ui的处理量,刷新ui可以更快速,主要可以停止对
(add(T), insert(T, int), remove(T), clear() 的操作,当然可以通过 notifyDataSetChanged(). 或 setNotifyOnChange(true) 通知变化

void  sort(Comparator<? super T> comparator)  //这里是android开发网经常用的排序,使用arrayadapter可以直接排序,十分方便 

所以最终android123推荐大家什么情况使用arrayadapter,什么时候使用baseadapter。当数量较多,比如超过100条或频繁动态增减时使用arrayadapter可以方便控制ui,通过setNotifyOnChanage方法,如果比较简单仅仅呈现直接从 baseadapter更节省资源。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/pilou5400/archive/2010/12/08/6062837.aspx

    
[2] ProgressDialog的1点经验
    来源: 互联网  发布时间: 2014-02-18
ProgressDialog的一点经验

在开发过程中发现这样的问题:
  我是用的是圆形进度条对话框,在Acitivity中第一次调用显示这个圆形进度条对话框的时候,圆形进度条的显示一切正常。可是在将这个进度条对话框隐藏后,并再次显示时,对话框上的圆形进度条就不转了。经过试验,解决方法如下:

package com.example.android.apis.view;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnKeyListener;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;

import com.example.android.apis.R;

public class ProgressBar3 extends Activity {

    private static final int DIALOG1_KEY = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.progressbar_3);

        Button button = (Button) findViewById(R.id.showIndeterminate);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
            	showDialog(DIALOG1_KEY);
            	//mDialog1.cancel();
            }
        });
    }
    @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
            case DIALOG1_KEY: {
            	ProgressDialog temp = new ProgressDialog(this);
            	temp.setOnKeyListener(new OnKeyListener(){

					@Override
					public boolean onKey(DialogInterface dialog, int keyCode,
							KeyEvent event) {
						// TODO Auto-generated method stub
						removeDialog(DIALOG1_KEY);
						return true;
					}
            		
            	});
            	return temp;
            }
        }
        return null;
    }
}

removeDialog(DIALOG1_KEY); 是解决该问题的关键。

我的sdk是LeOs 2.0 不知道其他版本的sdk编出的程序是否有这个问题。

1 楼 hanwei59 2011-04-24  
貌似水平进度条也有这样的问题,多次显示并隐藏后,进度条不从0开始了。

    
[3] AutoCompleteTextView 自动揭示输入
    来源: 互联网  发布时间: 2014-02-18
AutoCompleteTextView 自动提示输入
AutoCompleteTextView 自动提示输入
  在我们平常上网的时候经常会用到谷歌或百度,在输入框中输入我们想要输入的信息就会出现其他与其相关的提示信息,非常方便。这种效果在Android中是用AutoCompleteTextView实现的:
  AutoCompleteTextView是一个可编辑的文本视图显示自动完成建议当用户键入。建议列表显示在一个下拉菜单,用户可以从中选择一项,以完成输入。建议列表是从一个数据适配器获取的数据。它有三个重要的方法clearListSelection():清除选中的列表项、dismissDropDown():如果存在关闭下拉菜单、getAdapter():获取适配器。我们要这样实例化一下适配器
  ArrayAdapteradapter=newArrayAdapte(this,android.R.layout.simple_dropdown_item_1line,strs);
  
  


代码实现:

XML布局:

  <?xmlversion="1.0"encoding="utf-8"?>
  
  
  <LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  
  <!--
  AutoCompleteTextView-支持自动完成功能的可编辑文本控件
  -->
  
  
  <AutoCompleteTextView
  
  android:id="@+id/editText"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"/>
  
  </LinearLayout>

JAVA代码:

  packageEOE.android.IC;
  
  importandroid.app.Activity;
  importandroid.os.Bundle;
  importandroid.widget.ArrayAdapter;
  importandroid.widget.AutoCompleteTextView;
  
  publicclass_AutoCompleteTextViewextendsActivity{
  
  @Override
  protectedvoidonCreate(BundlesavedInstanceState){
  super.onCreate(savedInstanceState);
  setContentView(R.layout.autocompletetextview);
  
  setTitle("AutoCompleteTextView");
  
  //实例化适配器,指定显示格式及数据源
  ArrayAdapter<String>adapter=newArrayAdapter<String>(
  this,android.R.layout.simple_dropdown_item_1line,ary);
  
  
  AutoCompleteTextViewtextView=(AutoCompleteTextView)findViewById(R.id.editText);
  
  
  //指定自动完成控件的适配器
  textView.setAdapter(adapter);
  }
  
  //自动完成控件的所需数据的数据源
  privateString[]ary=newString[]{
  "abc",
  "abcd",
  "abcde",
  "abcdef",
  "abcdefg",
  "hij",
  "hijk",
  "hijkl",
  "hijklm",
  "hijklmn",
  };
  
  
  
  }

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3