ListView上是Android中最常用的控件之一,几乎所有的应用程序都会用到它。这篇文章将会介绍ListView的一种较为简单的用法。
首先,我们新建一个Android项目,在activity_main.xml中添加一个ListView控件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context=".MainActivity">
<ListView
android:id="@+id/lv_text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</RelativeLayout>
列表中每一项的视图需要我们自己设计,我们新建list_view_item.xml文件,在里面设计每一项的视图,这里为了写代码方便,仅设置一个 TextView控件。想要其他视图可以自行设计。
<?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="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="示例"
android:gravity="center_horizontal"
android:textSize="40sp" >
</TextView>
</LinearLayout>
视图设计好了,我们应该设计相应的适配器了,如果不知道怎么写的话,可以参考我的文章如何创建一个自定义的适配器
public class MyAdapter extends BaseAdapter {
private List<String> listText;
private Context context;
public MyAdapter(List<String> listText, Context context){
this.listText=listText;
this.context = context;
}
@Override
public int getCount() {
//return返回的是int类型,也就是页面要显示的数量。
return listText.size();
}
@Override
public Object getItem(int position) {
//不需要可以不写
return null;
}
@Override
public long getItemId(int position) {
//不需要可以不写
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
if (convertView == null){
//通过inflate 可以把一个布局转换成一个view对象
view = View.inflate(context, R.layout.list_view_item,null);
}
else {
view = convertView;
//复用历史缓存对象
}
//页面文字
TextView tvTitle = (TextView)view.findViewById(R.id.tv_title);
//将文字显示页面上
tvTitle.setText(listText.get(position));
return view;
}
}
适配器也写好了,我们应该写活动了,在MainActivity写入以下代码:
public class MainActivity extends AppCompatActivity {
//创建显示列表的listView
private ListView listView;
//每一项的文字
private List<String> listText;
//创建适配器对象
private MyAdapter adapter;
;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化页面对象
initUI();
//将数据显示在页面上
initDate();
}
public void initUI(){
listView = (ListView)findViewById(R.id.lv_text_view);
listText = new ArrayList<String>();
}
public void initDate(){
//模拟创建数据
for (int i = 0; i < 99; i++){
listText.add("示例"+i);
}
adapter = new MyAdapter(listText,this);
listView.setAdapter(adapter);
}
}
这样,我们活动中的ListView就算是写好了,运行如下: