当前位置:  编程技术>移动开发
本页文章导读:
    ▪BaseAdapter getView步骤说明        BaseAdapter getView方法说明 方法原型public View getView(int position, View convertView, ViewGroup parent)ListView控件中的viewitem数目只能刚好充满屏幕再翻页的过程中它只是用旧的view显示新的数据所以 convert.........
    ▪ LayoutInflater的应用        LayoutInflater的使用 LayoutInflater的作用类似于 findViewById()(1)LayoutInflater是用来找layout下xml布局文件,并且实例化。 (2)findViewById()是找具体xml下的具体 widget控件(如:Button)。为了让大家容.........
    ▪ Stream、Reader跟Writer       Stream、Reader和Writer InputStream/OutputStream:1)是所有的输入和输入类的基类。                               2)面向字节形式的I/O操作(8位字节流)。 Reader/Writer:面向字符的I/.........

[1]BaseAdapter getView步骤说明
    来源: 互联网  发布时间: 2014-02-18
BaseAdapter getView方法说明
方法原型
public View getView(int position, View convertView, ViewGroup parent)

ListView控件中的viewitem数目只能刚好充满屏幕

再翻页的过程中它只是用旧的view显示新的数据

所以 convertView参数 有可能是null 有可能不是null

我的写法:
public View getView(int position, View v, ViewGroup parent) {
		if(v==null){
			v=lai.inflate(R.layout.block, null);
		}
		GridItem item=data.get(position);
		ImageView iv= (ImageView) v.findViewById(R.id.ItemImage);
		iv.setImageResource(item.img);
		TextView tv=(TextView) v.findViewById(R.id.ItemText);
		tv.setText(item.text);
		v.setTag(item);
		return v;
	}


结论:viewitem 不是和 数据item 一一对应的

进一步研究请看http://www.cnblogs.com/xiaowenji/archive/2010/12/08/1900579.html

    
[2] LayoutInflater的应用
    来源: 互联网  发布时间: 2014-02-18
LayoutInflater的使用
LayoutInflater的作用类似于 findViewById()
(1)LayoutInflater是用来找layout下xml布局文件,并且实例化。
(2)findViewById()是找具体xml下的具体 widget控件(如:Button)。
为了让大家容易理解我做了一个简单的Demo,主布局main.xml里有一个TextView和一个Button,当点击Button,出现 Dialog,而这个Dialog的布局方式是我们在layout目录下定义的custom_dialog.xml文件(里面左右分布,左边 ImageView,右边TextView)。
//通后对话框显示一个视图          
public void showCustomDialog()   {   
    AlertDialog.Builder builder;   
    AlertDialog alertDialog;   
    Context mContext = LayoutInflaterDemo.this;   
       
    //下面俩种方法都可以   
 //LayoutInflater inflater = getLayoutInflater();   
    LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(LAYOUT_INFLATER_SERVICE);   
    View view= inflater.inflate(R.layout.custom_dialog,null);   //R.layout.custom_dialog为XML的布局文件
 TextView text = (TextView) view.findViewById(R.id.text);   
    text.setText("Hello!");   
    ImageView image = (ImageView) view.findViewById(R.id.image);   
    image.setImageResource(R.drawable.icon);   
    builder = new AlertDialog.Builder(mContext);   
    builder.setView(layout);   
    alertDialog = builder.create();   
    alertDialog.show();   
}   

//通过Toast来显示视图
protected void showToast(int type){
	Toast.makeText(this, "*********", Toast.LENGTH_LONG).show();   
	LayoutInflater inflater = LayoutInflater.from(this);  	
	View view=inflater.inflate(R.layout.ID, null);    	
	//2句可以合成一句
	//View view=LayoutInflater.from(this).inflate(R.layout.ID, null);   	
	Toast toast = new Toast(this);       
	toast.setView(view);          
	toast.setDuration(type);         
	toast.show();         
}  
 
 
 
 一般来讲,我们用LayoutInflater做一件事:inflate。inflate这个方法总共有四种形式,目的都是把xml表述的layout转化为View。
 

获得LayoutInflater的方法

(1)通过SystemService获得

LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View view=inflater.inflate(R.layout.ID, null); 

 

(2)从给定的from(Context context)中获取

LayoutInflater inflater = LayoutInflater.from(this);  

View view=inflater.inflate(R.layout.ID, null); 

或者干脆并成一句:  

View view=LayoutInflater.from(this).inflate(R.layout.ID, null);  

 

(3)Activity.getLayoutInflater()

LayoutInflater inflater = this.getLayoutInflater();  

 

 

 

二者区别:实质是一样的,请看源码

public static LayoutInflater from(Context context) {
    LayoutInflater LayoutInflater =
            (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (LayoutInflater == null) {
        throw new AssertionError("LayoutInflater not found.");
    }
    return LayoutInflater;
}

 

3. LayoutInflater.inflate()

将Layout文件转换为View,顾名思义,专门供Layout使用的Inflater。虽然Layout也是View的子类,但在android中如果想将xml中的Layout转换为View放入.java代码中操作,只能通过Inflater,而不能通过findViewById(),这一段描述有误,看如下代码 。看下面文档写的已经很清楚。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" 
	android:layout_width="fill_parent"
	android:layout_height="wrap_content">
	
	<LinearLayout android:id="@+id/placeslist_linearlayout"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical">
		
	</LinearLayout>	
</ScrollView>

 LinearLayout linearLayout = (LinearLayout) findViewById(R.id.placeslist_linearlayout);

linearLayout.addView(place_type_text);

这是可运行的,这上面的xml中,LinearLayout不再是Layout的代表,而只是一个普通的View。

 

 

 

4. findViewById有2中形式

R.layout.xx 是引用res/layout/xx.xml的布局文件(inflate方法),R.id.xx是引用布局文件里面的组件,组件的id是xx...(findViewById方法)。看看R.java配置文件吧,R对文件分类管理,多写几个layout.xml后你会发现,所有的组件id都能用R.id.xx来查看,但是组件不在setContentView()里面的layout中就无法使用,Activity.findViewById()会出现空指针异常 。

(1)Activity中的findViewById()

(2)View中的findViewById()

1 楼 qichao88888 2011-07-22  
分析的十分透彻,喜欢博主的文章!关注!
2 楼 lazy513 2011-08-18  
不错,学习了。
3 楼 passwrod 2012-08-02  
marke  以后有时间看

    
[3] Stream、Reader跟Writer
    来源: 互联网  发布时间: 2014-02-18
Stream、Reader和Writer

InputStream/OutputStream:1)是所有的输入和输入类的基类。 
                             2)面向字节形式的I/O操作(8位字节流)。 

Reader/Writer:面向字符的I/O操作(16位的Unicode字符) 
                 兼容Unicode 

InputStreamReader:可以将InputStream转换为Reader 
OutputStreamWriter:可以将OutputStream转换为Writer 

Java1.0类与java1.1类的对应表1 
InputStream             对应 Reader 
OutputStream            对应 Writer 
FileInputStream         对应 FileReader 
FileOutputStream        对应 FileWriter 
StringBufferInputStream 对应 StringReader 
无                          对应 StringWriter 
ByteArrayInputStream    对应 CharArrayReader 
ByteArrayOutputStream   对应 CharArrayWriter 

应该尽可能使用Reader和Writer类。 

Java1.0类与java1.1类的对应表2 
FilterInputStream    对应 FilterReader 
FilterOutputStream   对应 FilterWriter 
BufferedInputStream  对应 BufferedReader 
BufferedOutputStream 对应 BufferedWriter 
DataInputStream      
PrintStream          对应 PrintWriter 


DataInputStream和DataOutputStream价值在于无论在于什么样的平台java都可以准配的写入和读取数据。在写字符串并且让DateOutputStream能够恢复唯一可靠的方法是使用Unicode-8编码(DataOutputStream的writeUTF方法) 

I/O的重定向方法:setIn(InputStream), setOut(OutputStream), setErr(OutputStream)

 


    
最新技术文章:
▪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,