android之常用知识点(一)

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

  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();}

完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity(四):使用场景Ⅰ:建立类型映射

在之前的一篇文章“Unity(三)&#xff1a;快速入门”中&#xff0c;给出了一个简单的示例&#xff0c;让我们对Unity有一个感性的认识。但是&#xff0c;Unity到底是做什么用的呢&#xff1f;一个简单示例并不能解答这个问题。 总的来看&#xff0c;Unity的使用场景主要有以下几…

科技创新2030---“新一代人工智能”重大项目2018年度项目申报指南征稿

来源&#xff1a;财政资金申请摘要&#xff1a; “新一代人工智能”重大项目的凝练布局和任务部署已经战略咨询与综合评审特邀委员会咨询评议&#xff0c;并报国务院批准实施。根据《国务院关于改进加强中央财政科研项目和资金管理的若干意见》&#xff08;国发〔2014〕11号&…

一旦上云,欲罢不能,带大家薅一薅“云羊毛”

一旦上云&#xff0c;欲罢不能。相对于传统服务器&#xff0c;云服务器因为不需要去拉网线、搭机房、交电费等等问题&#xff0c;云服务器提供商往往会提供一整套完整的解决方案&#xff0c;帮助企业和个人用户&#xff0c;快速实现业务部署。 近年来&#xff0c;各大厂也在积…

Android之自定义控件深入

本文主要讲述两个知识点:popwindow的使用和通过继承View实现一个自定义控件&#xff0c;实现点击&#xff0c;手动按钮的效果. popwindow的使用 //定义 popupWindowpopWin new PopupWindow(MainActivity.this);popWin.setWidth(input.getWidth()); //设置宽度popWin.setHeig…

这是一个我面试某公司的算法题目:对一个字符数组进行排序,根据给定的字符,大于它的,放在数组的左边,小于它的,放在数组的右边,且数组中的元素之间的相对位置要保持不变。...

这个题目面试的时候&#xff0c;用的是最简单&#xff0c;但多开辟内存的方法&#xff0c;后来自己想想&#xff0c;在原数组进行操作的方法&#xff1a; private static string GreaterLeftLessRight(string str, char c){char[] array str.ToCharArray();int comparingIndex…

麒麟芯片AI首席科学家,解读AI芯片如何让手机更智能

来源&#xff1a;华为摘要&#xff1a;8月31日&#xff0c;华为发布了新一代顶级人工智能手机芯片——麒麟980&#xff0c;成为全球首款采用7nm制程工艺的手机芯片。麒麟980能做到人脸识别、物体识别、物体检测、图像分割、智能翻译等&#xff0c;实现AI识别质的飞跃。今天&…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 17丨文章浏览 I【难度简单】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

协议森林14 逆袭 (CIDR与NAT)

作者&#xff1a;Vamei 出处&#xff1a;http://www.cnblogs.com/vamei 严禁任何形式转载。 IPv4由于最初的设计原因&#xff0c;长度只有32位&#xff0c;所以只提供了大约40亿个地址。这造成了IPv4地址的耗尽危机。随后&#xff0c;IPv6被设计出来&#xff0c;并可以提供足够…

认知神经科学:美陆军高度关注的人工智能与生物科技的交叉学科领域

来源&#xff1a;天大神经工程近年来&#xff0c;随着“第三次抵消战略”的深入推进&#xff0c;美军重点部署人工智能、生物科技等前沿技术领域发展&#xff0c;寻求获取新的领先优势。作为人工智能与生物科技的交叉学科领域&#xff0c;认知神经科学具有颠覆未来作战样式的巨…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 17丨文章浏览 II【难度中等】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

Android之自定义属性

安卓自定义属性主要有3个步骤 在values文件夹新建attrs.xml文件中声明属性&#xff0c;包括属性名和格式&#xff0c;format常用属性有string ,integer,reference等 <?xml version"1.0" encoding"utf-8"?> <resources><!-- 声明属性集…

log4j的配置方法

一、 介绍 Log4j是Apache的一个开放源代码项目&#xff0c;通过使用Log4j&#xff0c;我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等&#xff1b;我们也可以控制每一条日志的输出格式&#xff1b;通…

中国智能制造发展趋势!

来源&#xff1a;中国电子信息产业发展研究院赛迪顾问认为&#xff0c;我国智能制造发展有三个趋势&#xff0c;即企业向系统方案解决供应商转型&#xff0c;生产更加柔性化、定制化&#xff0c;“互联网”促进价值链向价值网转变。一、智能制造装备企业逐步向系统方案解决供应…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 18丨即时食物配送 I【难度简单】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

感知哈希算法原理与实现

今天忽然想做一个图像识别的APP&#xff0c;但是在两张图片相似度的问题上产生了问题&#xff0c;感知哈希算法并不能解决这个问题&#xff0c;只是我在试着解决问题的过程中学到的一点知识。 这里的关键技术叫做”感知哈希算法”&#xff08;Perceptual hash algorithm&#…

Android开发中目前流行控件和知识点总结

1、SlidingMenu 滑动菜单 应用案例&#xff1a;Facebook 、 Path 2.0 、人人、网易新闻 下载地址&#xff1a; https://github.com/jfeinstein10/SlidingMenu 2、PullToRefresh 下拉刷新 应用案例&#xff1a;新浪微博 等等 &#xff0c;这个很长用哦&#xff01; 下载地址&…

李德毅:“反用驾驶脑”测认知能力,谁说酒驾一定违规?

来源&#xff1a;德先生摘要&#xff1a;从2016年阿尔法狗成功挑战人类智慧的这场世纪大战开始&#xff0c;“人工智能”便引发了全世界的关注。从2016年阿尔法狗成功挑战人类智慧的这场世纪大战开始&#xff0c;“人工智能”便引发了全世界的关注。为了让中国在人工智能这场“…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 18丨即时食物配送 II【难度中等】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

[zz]4.1.5 进程的处理器亲和性和vCPU的绑定

转载自&#xff1a;http://smilejay.com/2012/08/kvm-vcpu-binding/ 通常情况下&#xff0c;在SMP系统中&#xff0c;Linux内核的进程调度器根据自有的调度策略将系统中的一个进程调度到某个CPU上执行。一个进程在前一个执行时间 是在cpuM&#xff08;M为系统中的某CPU的ID&…

谷歌无人车十年记:理想背后的骨感现实 | 厚势汽车

来源&#xff1a;The Information编译&#xff1a;厚势摘要&#xff1a;即使是近 10 年后&#xff0c;Waymo 仍远没有实现真正的 L4&#xff0c;即使是在相对简单的郊区环境下。「全自动驾驶的汽车来了&#xff01;」去年 11 月&#xff0c;Waymo 搞了一个大新闻。公司宣布自己…