云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 第一行代码Android学习笔记完全版

第一行代码Android学习笔记完全版

  • 62 次阅读
  • 3 次下载
  • 2025/5/4 18:14:18

public TitleLayout( Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.title, this); Button edit=(Button) findViewById(R.id.title_edit); Button back=(Button) findViewById(R.id.title_back); edit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(getContext(), \ } }); back.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(getContext(), \ } }); } }

(3)如同加入其它的控件一样,将该自定义的控件添加到mainactivity.xml文件中

android:layout_width=\ android:layout_height=\

四、ListView 1、最简单的Adapter

要将数据放置在ListView中,都需要一个adapter转换。

一个最简单的adapter,就是把一个字符串数组放置在ListView中。

ArrayAdapter接收3个参数:context,ListView单个子项布局id和数据。

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

ArrayAdapter adapter=new ArrayAdapter(MainActivity.this,

android.R.layout.simple_list_item_1, data); listView.setAdapter(adapter);

2、定制ListView界面

只显示文字很单调,需要显示图片等,则需要构建自定义的布局。 (1)数据:Fruit类

首先准备需要适配的数据,数据包括文字、图片id,定义一个Fruit类存放这些数据。 (2)子项布局:fruit_layout.xml

之后,需要自定义ListView中单个子项的布局。本例中就是一个图片加上一个文字。 (3)自定义适配器:FruitAdapter.java

该适配器中,最重要的是getView()方法。该方法在每个子项滚动到屏幕内时被调用。 position是该子项的位置,利用getItem(position)可以获得当前的Fruit实例fruit; 然后,利用LayoutInflater可以加载布局为fruit_layout的布局view;

该布局view即为步骤(2)中自定义的布局,通过view.findViewById()可以获得ImageView和TextView。

最后,将fruit中的imageId和name传入ImageView和TextView。

public class FruitAdapter extends ArrayAdapter{ private int resourceId; public FruitAdapter(Context context, int resource, List objects) { super(context, resource, objects); resourceId=resource; } public View getView(int position, View convertView, ViewGroup parent) { Fruit fruit=getItem(position); View view=LayoutInflater.from(getContext()).inflate(R.layout.fruit_layout, null); TextView fruit_name=(TextView) view.findViewById(R.id.fruit_name); ImageView fruit_image=(ImageView) view.findViewById(R.id.fruit_image); fruit_image.setImageResource(fruit.getImageId()); fruit_name.setText(fruit.getName()); return view; } }

(4)使用

List fruits=new ArrayList();

FruitAdapter adapter=new FruitAdapter(MainActivity.this, R.layout.fruit_layout, fruits);

在fruits中添加数据。

3、提升ListView效率

getView()每次都将布局重新加载一遍,效率很低。处理方法为: (1)convertView

convertView将之前加载好的布局进行缓存,以便之后重用。则可以不必每次都使用LayoutInflater重新加载布局,而直接加载缓存的布局。 if(convertView==null)

view=LayoutInflater.from(getContext()).inflate(R.layout.fruit_layout, null); else view=convertView;

(2)ViewHolder

每次都使用findViewById获取控件,效率低下。

使用convertView将之前已经find的view也一起缓存。

View有setTag()和getTag()方法,分别进行数据写入和读取。

采用自定义的ViewHolder类,将多个参数一起管理,比如TextView/ImageView等。

public class FruitAdapter extends ArrayAdapter { public FruitAdapter(Context context, int resource, List objects) { super(context, resource, objects); resourceId = resource; } private int resourceId; public View getView(int position, View convertView, ViewGroup parent) { Fruit fruit = getItem(position); View view; ViewHolder viewHolder; if (convertView == null) { viewHolder = new ViewHolder(); //一定要记住实例化对象啊 view = LayoutInflater.from(getContext()).inflate( R.layout.fruit_layout, null); viewHolder.fruit_image = (ImageView) view .findViewById(R.id.fruit_image); viewHolder.fruit_name=(TextView) view.findViewById(R.id.fruit_name); view.setTag(viewHolder);

} else { view = convertView; viewHolder = (ViewHolder) view.getTag(); }

viewHolder.fruit_image.setImageResource(fruit.getImageId()); viewHolder.fruit_name.setText(fruit.getName()); return view;

}

class ViewHolder { ImageView fruit_image; TextView fruit_name; }

}

4、ListView点击事件

注册setOnItemClickListener()事件:

listView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView parent, View view, int position, long id) { Fruit fruit=fruits.get(position); Toast.makeText(MainActivity.this, Toast.LENGTH_SHORT).show(); } });

五、单位和尺寸

px: 像素

pt:磅数,1pt=1/72inch

dp:密度无关像素

密度dpi:屏幕每inch包含的像素数。 获取当前屏幕密度值:

float xdpi=getResources().getDisplayMetrics().xdpi;

fruit.getName(),

搜索更多关于: 第一行代码Android学习笔记完全版 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

public TitleLayout( Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.title, this); Button edit=(Button) findViewById(R.id.title_edit); Button back=(Button) findViewById(R.id.title_back); edit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com