Android学习之ListView控件
来源:互联网 发布:mac搜狗 工具箱 编辑:程序博客网 时间:2024/04/27 13:10
ios学习了这么长时间,再学习android(和我之前学习C#转ios感觉一样)总想的是:在ios是这么做的,那么在android里面是不是有类似的做法呢?答案肯定是:有!
我说一说我学习android控件listview(和UITableview差不多的一个表控件)。
先说思路:
a.是不是有类似xib让我可以自定每个cell(ios)?有,叫做item 对应是XML,其实xib也是可以用xml编辑的。
b.是不是有类似UITableView的回调方法?有,叫做适配器(其实是ios的delegate对应android或是java中接口或抽象类)。
1).返回行
2).返回每个item/cell
3).给每一行添加单击事件
4).获取每一行里面的控件赋值
5).如何将item的xml映射(或者叫绘制)成view
其实一对比结果发现它们有太多的相似了。看看实现过程:
表的样式:
1.穿件一个Android项目(过程省略了)。
2.在activity_main.xml中添加listview :
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="wrap_content" ></ListView></LinearLayout>
3.在layout中添加一个item的xml布局文件(名字为:item_xml.xml):
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <ImageView android:id="@+id/img" android:layout_width="71dp" android:layout_height="71dp" android:src="@drawable/ic_launcher" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/title" android:layout_width="242dp" android:layout_height="wrap_content" android:text="222" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/info" android:layout_width="match_parent" android:layout_height="47dp" android:text="11" /> </LinearLayout> </LinearLayout>
上面三步完成,工作已经完成一半,下面就需要完成,如何把item的xml文件在listview中显示。
用ios的说法,需要给表制定数据源和代理返回cell。
4.添加一个单独的java类extended baseadapter(单独在建一个java的package),同时实现它的几个代理方法(名字为ListAdapter.java):
package com.example.adapter;import com.example.hello.R;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;public class ListAdapter extends BaseAdapter{ Context myContext; LayoutInflater myInflater; public ListAdapter(Context context) { this.myContext = context; this.myInflater = LayoutInflater.from(context); } @Overridepublic int getCount() {//返回行数return 23;}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int arg0) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int arg0, View arg1, ViewGroup arg2) {// TODO Auto-generated method stubif (arg1 == null){//将XML绘制成viewarg1 = this.myInflater.inflate(R.layout.item_xml, null);}return arg1;}
好了,适配器也写完了,这里把表的行数,返回每个行的view都完成了。
5.把上面的4步综合整理,让这个表显示出来在activity中的java文件中写下:
package com.example.hello;import com.example.adapter.ListAdapter;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;public class ThreeActivity extends Activity{ListView myListView;ListAdapter myAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState){// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.third_activity); //适配器myAdapter = new ListAdapter(this);myListView = (ListView) findViewById(R.id.listView);myListView.setAdapter(myAdapter);//给每个item添加一个单击事件myListView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3){// TODO Auto-generated method stubLog.v( Integer.toString(arg2), "onclick()");}});}}
0 0
- Android学习之ListView控件
- Android控件学习之ListView
- Android个性化控件学习(View)之ListView
- Android 控件 ListView学习
- Android 控件之ListView
- Android控件之ListView
- Android控件之ListView
- android控件之ListView
- Android控件之ListView
- Android控件之ListView
- Android控件之ListView
- Android控件之ListView
- Android之ListView控件
- Android控件之ListView
- Android控件之ListView
- Android控件之ListView
- Android控件之ListView
- Android之UI学习篇十一:ListView控件学习(一)
- 交换机和路由器的区别
- J2EE规范标准
- 关于人工智能的一些思考~
- [leetcode] Generate Parentheses
- RC5_C语言代码
- Android学习之ListView控件
- jsp表单提交接收到数据乱码
- android学习十三(android的通知使用)
- jsp 中的会话跟踪技术
- FieldType 元素(字段类型)
- POJ 1523 割点
- NESASM教程——第八天——比较
- CUDA 编程 之 invalid device function
- FieldTypes 元素(字段类型)