Android_ListView用法


先来简单的创建~然后再慢慢优化,发出来供大家交流经验,嘿嘿

先说说listview的原理

其实listview 可以看做一个框架子,他有一个整体的框框,还有一个一个的行,
就像这样(图是我自己画的。。。不知道这样理解够不够完善,但是写代码的时候就是这个思路了)

Android_ListView用法源代码下载:

免费下载地址在 http://linux.bkjia.com/

用户名与密码都是www.bkjia.com

具体下载目录在 /2013年资料/8月/16日/Android_ListView用法

下载方法见

Android中的ListView实现图片文字和按钮

Android ListView 的下拉刷新【附源码】

Android 中ListView的优化

Android中ListView 大小因分辨率而异

Android_ListView用法

1、首先创建项目~

2、在activity_main.xml中拖入ListView的组件(组件在composite中)
刚加进去的代码是这样的
1234567 <ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</ListView>

一定要注意将layout_height的值改为match_parent,否则在运行时会出现跳行的情况(具体原因是:在activity加载ListView的时候,如果ListView的高度为适应内容,那么每次加载行的时候都会重新运算一遍,所以如果打日志的话 会发现 原本只有6行的显示,却打了好多行日志)


3、在layout里面新建个行布局(布局就随便了,我一般用RelativeLayout,如果是只需要一个文本的话,只用一个TextView 也是可以的)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>

也可以直接这样的
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" >
</TextView>

OK  UI(布局文件) 这样就可以了 简单的来么

现在来看代码

在MainActivity.java中的onCreate方法中加入先读取layout中的listview
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = (ListView) findViewById(R.id.listView1);//读取listView的
BaseAdapter adapter = new BaseAdapter()//创建一个适配器,这是一个内部类了
{
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
/*
* getView 加载每一行的时候系统会自动调用这个方法,所以要在这个方法中创建当前行样式
* 主要参数:1、position:当前行的id
*  2、convertView:当listview滑动式缓存消失的行布局
*  3、parent:The parent that this view will eventually be attached to
* (额这是官方解释了。。。sorry~ 没用过具体怎么样我也不太清楚)
*/
//开始创建行,
LayoutInflater inflater = getLayoutInflater();
RelativeLayout layout = (RelativeLayout) inflater.inflate(R.layout.list_item, null);
//以上两行代码 获取每行的布局
//有了layout就可以获取当前行的组件了,组件拿到了,也就可以设置该组件的值了
TextView textView = (TextView) layout.findViewById(R.id.textView1);
textView.setText("title"+position);//前面有说过position是代表当前行的id 从零开始计数
return layout;//一定要记得将创建好的行布局 返回给 系统,不然 你讲神马都看不到了
}
@Override
public long getItemId(int position)//这个方法还有getItem()方法 我都没有用过,具体什么效果                                      //大家可以试试撒
{
return 0;
}
@Override
public Object getItem(int position)
{
return null;
}
@Override
public int getCount()//设置要创建多少行
{
return 10;//表示要创建10行
}
};
listView.setAdapter(adapter);//将创建的适配器(adapter)放到listview中
}

这样就ok了 一个简单的listview 就搞好了,可以在模拟器上运行下试试撒~

  • 1
  • 2
  • 下一页

相关内容