注册资本1000万的公司需要多少钱,青岛seo计费,软件工程学什么课程,cj联盟wordpress本文主要包括安卓一些常用的知识点
android常用的四种响应按钮点击事件的方法android动态刷新界面android常用的listView用法android常用的handler的用法
android常用的四种响应按钮点击事件的方法有
1.内部类
2.匿名内部类
3.布局文件夹定义Onclick属性,并在activity中声…本文主要包括安卓一些常用的知识点
android常用的四种响应按钮点击事件的方法android动态刷新界面android常用的listView用法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:idid/loginButton android:layout_widthwrap_content android:layout_heightwrap_content android:onClickbtnOnClick android:layout_alignParentRighttrue 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:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticaltools:context.MainActivity Buttonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:onClickonClickandroid:text添加 /ScrollViewandroid:layout_widthfill_parentandroid:layout_heightfill_parent LinearLayoutandroid:idid/llandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:orientationvertical /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是安卓中一种常用的控件有以下三种实现方法
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
ListMapString, Object data ArrayListMapString,Object();
MapString, Object map new HashMapString, Object();map new HashMapString, Object();map.put(name, 张三5);map.put(icon, R.drawable.f007);data.add(map);
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列表中的数据*/ArrayAdapterString adapter new ArrayAdapterString(this, android.R.layout.simple_list_item_1, textArray);mListView.setAdapter(adapter);
最常见的继承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实现
定义一个消息接收器
/*** 接收消息*/Overridepublic void handleMessage(Message msg) {switch (msg.what) {case SUCCESS: // 访问成功, 有数据// 给Listview列表绑定数据newInfoList (ListNewInfo) msg.obj;MyAdapter adapter new MyAdapter();lvNews.setAdapter(adapter);break;case FAILED: // 无数据Toast.makeText(MainActivity.this, 当前网络崩溃了., 0).show();break;default:break;}}};定义一个子线程发送消息
private void init() {lvNews (ListView) findViewById(R.id.lv_news);// 抓取新闻数据new Thread(new Runnable() {Overridepublic void run() {// 获得新闻集合ListNewInfo newInfoList getNewsFromInternet();Message msg new Message();if(newInfoList ! null) {msg.what SUCCESS;msg.obj newInfoList;} else {msg.what FAILED;}handler.sendMessage(msg);}}).start();}
完成