ListView ( BaseAdapter )
来源:互联网 发布:js实现时间选择器区间 编辑:程序博客网 时间:2024/05/19 23:57
出处:www.csdn.net
首先看代码
listview2.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="vertical" > <ListView android:id="@+id/listview2listview" android:layout_width="fill_parent" android:layout_height="fill_parent" > </ListView> </LinearLayout>
listitem2.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" android:id="@+id/MyListItem2" android:paddingBottom="3dip" android:paddingLeft="10dip" > <ImageView android:id="@+id/listitem2imageview" android:layout_height="fill_parent" android:layout_width="wrap_content" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/listitem2ItemTitle"android:layout_height="wrap_content"android:layout_width="fill_parent" android:textSize="30dip"/> <TextView android:id="@+id/listitem2ItemText"android:layout_height="wrap_content"android:layout_width="fill_parent"/> </LinearLayout></LinearLayout>
ListViewActivity2.java
public class ListViewActivity2 extends Activity {private ListView listView = null; private String[] titles={"this is title 1","this is title 2","this is title 3","this is title 4"}; private String[] texts={"this is text 1","this is text 2","this is text 3","this is text 4"}; private int[] resIds={R.drawable.ic_launcher,R.drawable.ic_launcher, R.drawable.ic_launcher,R.drawable.ic_launcher}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listview2); this.setTitle("ListView(BaseAdapter)"); listView=(ListView)this.findViewById(R.id.listview2listview); listView.setAdapter(new ListViewAdapter(titles,texts,resIds)); } public class ListViewAdapter extends BaseAdapter { View[] itemViews; @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) return itemViews[position]; return convertView; } @Override public int getCount() { return itemViews.length; } @Override public View getItem(int position) { return itemViews[position]; } @Override public long getItemId(int position) { return position; } //构造方法 public ListViewAdapter(String[] itemTitles, String[] itemTexts, int[] itemImageRes) { itemViews = new View[itemTitles.length]; for (int i = 0; i < itemViews.length; i++) { itemViews[i] = makeItemView(itemTitles[i], itemTexts[i], itemImageRes[i]); } } private View makeItemView(String strTitle, String strText, int resId) { LayoutInflater inflater = (LayoutInflater) ListViewActivity2.this .getSystemService(Context.LAYOUT_INFLATER_SERVICE); //返回的这个View对象可以这样理解:布局文件xml的对象 View itemView = inflater.inflate(R.layout.listitem2, null); // 通过findViewById()方法实例R.layout.item内各组件 TextView title = (TextView) itemView.findViewById( R.id.listitem2ItemTitle); title.setText(strTitle); TextView text = (TextView) itemView.findViewById( R.id.listitem2ItemText); text.setText(strText); ImageView image = (ImageView) itemView.findViewById( R.id.listitem2imageview); image.setImageResource(resId); return itemView; } } }
两个xml文件不解释了从onCreate()开始看,执行listView.setAdapter(new ListViewAdapter(titles,texts,resIds)); 的时候
首先new出个我们自定义的继承自BaseAdapter的ListViewAdapter的对象,实例化的时候构造方法中会循环给itemViews数组赋值,
而itemViews中的每个元素对应listitem2.xml这个布局文件的实例
所以用LayoutInflater来实例化把得到的数据填充itemViews中去
而Android每次初始化ListView的时候是一行一行描绘出来的,每描绘一行会调用一次getView(int position, View convertView, ViewGroup parent)
描绘第n行在调用这个方法的时候给第一个参数position传的值就是n-1。所以我们直接根据position返回就好了。
截图:
ps:根据gv的改编。我也是边学边做的笔记,如果哪儿有不到位的地方希望大家指出,一起学习,一起进步。谢谢!!!
- ListView ( BaseAdapter )
- listview baseadapter
- ListView BaseAdapter
- ListView-BaseAdapter
- baseAdapter ListView
- Android ListView理解,BaseAdapter
- Android ListView理解,BaseAdapter
- Adapter,BaseAdapter和ListView
- Android ListView BaseAdapter 分析
- ListView BaseAdapter 简单分析
- listview baseadapter优化
- Android ListView理解,BaseAdapter
- Android:ListView BaseAdapter
- ListView中的BaseAdapter用法
- ListView与 simpleadapter 。baseadapter
- baseadapter listview错误
- ListView之BaseAdapter
- ListView结合BaseAdapter实例
- javascript解析json
- WM_CLOSE WM_DESTROY WM_QUIT 区别
- 浮点异常
- Db_name,Db_domain,Global_name,Service_name解释
- 拦截器
- ListView ( BaseAdapter )
- 如何在头文件中定义静态数据成员(消除重复定义)
- IP网段计算和划分
- AOP下的权限控制实现
- QTreeWidget (两层)点击右键菜单删除节点
- Hidden Markov Models
- Jpype调用java 故障
- 线程池Demo
- 托福词汇:List 11