本文主要包括安卓一些常用的知识点

  1. android常用的四种响应按钮点击事件的方法
  2. android动态刷新界面
  3. android常用的listView用法
  4. android常用的handler的用法

android常用的四种响应按钮点击事件的方法有

1.内部类

2.匿名内部类

3.布局文件夹定义Onclick属性,并在activity中声明方法

4.在主类中实现OncickListener接口,并在主类中实现未实现的方法

1.内部类

btnButton.setOnClickListener(new MyListener());  class MyListener implements OnClickListener {  @Override  public void onClick(View v) {  System.out.println("内部类响应点击事件");  }  }  

2.匿名内部类

btnButton.setOnClickListener(new OnClickListener() {  @Override  public void onClick(View v) {  System.out.println("匿名内部类响应按钮点击事件");  }  });  

3.布局文件夹定义Onclick属性,并在activity中声明方法
定义Onclick属性

<Button  android:id="@+id/loginButton"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:onClick="btnOnClick"  android:layout_alignParentRight="true"  android:text="登入" />
声明 "btnOnClick"方法
[java] view plain copy 在CODE上查看代码片派生到我的代码片
public void btnOnClick(View v) {  System.out.println("定义属性响应按钮点击事件");
}  

4.在主类中实现OncickListener接口,并在主类中实现未实现的方法

btnButton.setOnClickListener(this);  
public class MainActivity extends Activity implements OnClickListener  
@Override
public void onClick(View v) {  // TODO Auto-generated method stub  }  

动态刷新界面实现

第一步:定义一个LinearLayout作为将来加载的条目的容器

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity" ><Button
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="onClick"android:text="添加" /><ScrollView
        android:layout_width="fill_parent"android:layout_height="fill_parent" ><LinearLayout
            android:id="@+id/ll"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ></LinearLayout></ScrollView></LinearLayout>

第二步:定义textView并加入到容器中

public class MainActivity extends Activity {private LinearLayout llGroup;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);llGroup = (LinearLayout) findViewById(R.id.ll);}public void onClick(View view) {// 添加一个TextView向llGroup// 定义一个textview对象TextView tv = new TextView(this);tv.setText("张三   女   34");// 把textview对象添加到linearlayout中llGroup.addView(tv);}
}

listView实现

listView是安卓中一种常用的控件,有以下三种实现方法

  1. simpeAdapter
SimpleAdapter adapter = new SimpleAdapter(this, // 上下文data, // listView绑定的数据R.layout.listview_item, // listview的子条目的布局的idnew String[]{"name", "icon"},   // data数据中的map集合里的keynew int[]{R.id.tv_name, R.id.iv_icon}); // resource 中的idmListView.setAdapter(adapter);

其中data是ArrayList类型的数据,里面存储了map类型的数据,有两个键name,incon

List<Map<String, Object>> data =ArrayList<Map<String,Object>>();
Map<String, Object> map = new HashMap<String, Object>();map = new HashMap<String, Object>();map.put("name", "张三5");map.put("icon", R.drawable.f007);data.add(map);
  1. arrayAdapter
ListView mListView = (ListView) findViewById(R.id.listview);String[] textArray = {"功能1","功能2","功能3","功能4","功能5","功能6","功能7","功能8"};/** 定义数据适配器* android.R.layout.simple_list_item_1  Listview的子条目显示的布局的id* textArray 显示在ListView列表中的数据*/ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, textArray);mListView.setAdapter(adapter);
  1. 最常见的继承baseAdapter
    在oncreate方法中
 ListView mListView = (ListView) findViewById(R.id.listview);PersonDao dao = new PersonDao(this);personList = dao.queryAll();// 把view层对象ListView和控制器BaseAdapter关联起来mListView.setAdapter(new MyAdapter());```   ### anapter实现```/*** @author andong* 数据适配器*/class MyAdapter extends BaseAdapter {private static final String TAG = "MyAdapter";/*** 定义ListView的数据的长度*/@Overridepublic int getCount() {return personList.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}/*** 此方法返回的是ListView的列表中某一行的View对象* position 当前返回的view的索引位置* convertView 缓存对象* parent 就是ListView对象*/@Overridepublic View getView(int position, View convertView, ViewGroup parent) {TextView tv = null;if(convertView != null) {       // 判断缓存对象是否为null,  不为null时已经缓存了对象Log.i(TAG, "getView: 复用缓存" + position);tv = (TextView) convertView;} else {    // 等于null, 说明第一次显示, 新创建Log.i(TAG, "getView: 新建" + position);tv = new TextView(MainActivity.this);}tv.setTextSize(25);Person person = personList.get(position); // 获得指定位置的数据, 进行对TextView的绑定tv.setText(person.toString());return tv;}}

在listView中展示的控件也可以是自定义的

/*** 此方法返回的是ListView的列表中某一行的View对象* position 当前返回的view的索引位置* convertView 缓存对象* parent 就是ListView对象*/@Overridepublic View getView(int position, View convertView, ViewGroup parent) {View view = null;if(convertView == null) {// 布局填充器对象, 用于把xml布局转换成view对象LayoutInflater inflater = MainActivity2.this.getLayoutInflater();view = inflater.inflate(R.layout.listview_item, null);} else {view = convertView;}// 给view中的姓名和年龄赋值TextView tvName = (TextView) view.findViewById(R.id.tv_listview_item_name);TextView tvAge = (TextView) view.findViewById(R.id.tv_listview_item_age);Person person = personList.get(position);tvName.setText("姓名: " + person.getName());tvAge.setText("年龄: " + person.getAge());return view;}

handler实现

  1. 定义一个消息接收器
/*** 接收消息*/@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case SUCCESS:       // 访问成功, 有数据// 给Listview列表绑定数据newInfoList = (List<NewInfo>) msg.obj;MyAdapter adapter = new MyAdapter();lvNews.setAdapter(adapter);break;case FAILED:    // 无数据Toast.makeText(MainActivity.this, "当前网络崩溃了.", 0).show();break;default:break;}}};
  1. 定义一个子线程发送消息
private void init() {lvNews = (ListView) findViewById(R.id.lv_news);// 抓取新闻数据new Thread(new Runnable() {@Overridepublic void run() {// 获得新闻集合List<NewInfo> newInfoList = getNewsFromInternet();Message msg = new Message();if(newInfoList != null) {msg.what = SUCCESS;msg.obj = newInfoList;} else {msg.what = FAILED;}handler.sendMessage(msg);}}).start();}

完成

android之常用知识点(一)相关推荐

  1. android开发常用知识点备忘录

    1. 最近开发的时候发现view.setBackground(id)会拉伸图片,view.setImageResource(id)不会.即android:background会拉伸,android:s ...

  2. Android项目开发实战常用知识点

    Android项目开发实战常用知识点 一:启动页延时两秒再跳转到主界面: //执行类 private class SlpashRunnable implements Runnable {@Overri ...

  3. Android群英传知识点回顾——第四章:ListView常用优化技巧

    Android群英传知识点回顾--第四章:ListView常用优化技巧 知识点目录 4.1 ListView常用优化技巧 4.1.1 使用ViewHolder模式提高效率 4.1.2 设置项目间分割线 ...

  4. android 移除泛型中元素_最新(2020)Android高级面试知识点干货分享(二)

    最新Android高级面试知识点干货分享(一) *转载请说明出处*! 四.Java集合(List.Set.Queue.Map) Java集合体系是一个树状,如果按照类似OSI网络模型来看的话,整个Ja ...

  5. android开发常用组件和第三方库(二)

    TimLiu-Android 自己总结的Android开源项目及库. github排名 https://github.com/trending, github搜索:https://github.com ...

  6. Android和java知识点总结

    Android和java知识点总结(均为网络转载,方便复习和学习) 1 java基础部分 1.1 JVM部分 1.2 JVM内存区域(运行时数据区域): 1.3 JVM内存区域(虚拟机栈): 1.4 ...

  7. android屏幕密度高度,Android获取常用辅助方法(获取屏幕高度、宽度、密度、通知栏高度、截图)...

    我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现.下面就分享一下Android中常用的一些辅助方法: 获取屏幕高度: /** * 获得屏幕高度 * @para ...

  8. Android专题-常用第三方框架

    Android专题-常用第三方框架 HTTP网络请求 带*号的是个人推荐比较好用的 HTTP网络请求 okhttp * :https://github.com/square/okhttp retrof ...

  9. javaScript常用知识点有哪些

    javaScript常用知识点有哪些 一.总结 一句话总结:int = ~~myVar, // to integer | 是二进制或, x|0 永远等于x:^为异或,同0异1,所以 x^0 还是永远等 ...

最新文章

  1. python 使用raise语句主动抛出异常(Exception)、将异常抛出给上一级
  2. Ubuntu下报错PCIe Bus Error:severity=Corrected, type=Physical Layer, id=00e8(Receiver ID)
  3. 安卓倒计时 listview默认选中一项
  4. pytorch线性回归(笔记一)
  5. iOS常用的第三方类库
  6. python day23
  7. windows内核_Windows内核漏洞利用
  8. ie6-7中会出现图片下有空隙
  9. 【大数据语言】怎样利用Python爬虫,高效获取大规模数据
  10. VS2013打包teamtalk
  11. 37个 safari 快捷键,让Mac网页浏览更方便
  12. 浅层复制和深层复制( implements Cloneable )
  13. 关于领域驱动设计(DDD)中聚合设计的一些思考
  14. mac如何打开/bin等目录
  15. dw新建一个html网页,Dreamweaver创建网页的基本方法
  16. 学习笔记 - 正态分布
  17. 记一次src挖洞实战——逻辑漏洞
  18. 与“十“俱进 阿里数据库运维10年演进之路
  19. python程序员培训_推荐给未来Python程序员的自学路线,不再背负小白名称
  20. 自动化缺陷检测系统01-项目总体方案设计

热门文章

  1. 改变世界,改善生活:我从科沃斯扫地机器人X1,看到了AI新的希望
  2. 算法与数据结构--空间复杂度O(1)遍历树
  3. 互联网架构:常用基础中间件介绍
  4. 论文浅尝 | 基于知识图谱嵌入的 Bootstrapping 实体对齐方法
  5. 零基础入门NLP - 新闻文本分类,正式赛第一名方案分享
  6. 1.3 字符串的全排列
  7. tensorflow2.0 Dataset创建和使用
  8. 【ACL2020】Relabel the Noise: Joint Extraction of Entities and Relations via Cooperative Multiagents
  9. gin+vue的前后端分离开源项目
  10. 防火墙的理论特性和实际功能