初步认识ListView
首先,安卓的ListView是用来批量展示信息,并以垂直列表的形式显示所有列表项.listview是一个组合控件,它本身是一个框和行分隔,用适配器(Adapter)来存放每一行的数据。
listview实现步骤:
1、在布局文件上面设置一个listview控制
2、创建一个listview的行布局(通常用RelativeLayout)
3、在Activity里面查找到listview控件对象。
4、为listview控件对象设置一个适配器(对象.setAdapter(适配器对象))
5、创建一个适配器对象(通常用的是BaseAdapter)
BaseAdapter adapter = new BaseAdapter() {
//设置listview行布局和内容
public View getView(int position, View convertView, ViewGroup parent) {
//得到一个布局转换器
LayoutInflater layoutInflater = getLayoutInflater();
//通过布局转换器把行布局文件转换成可用的布局对象
RelativeLayout inflate =
(RelativeLayout) layoutInflater.inflate(R.layout.list_item, null);
//查找布局对象里面存放的控件
TextView textView = (TextView) inflate.findViewById(R.id.textView1);
//获取行号对应的信息内容
String text = arrayList.get(position);
textView.setText(text );
return inflate;
}
//决定listview的行数
public int getCount() {
return arrayList.size();
}
};
注意:getView()方法调用:界面上每出现一行就调用一次getview();
getCount() 第一次调用在getview之前
注意:listview的高度不能设置成wrap_content。可以指定高度XXdp或者设置长match_praent
以下是简单的listview例子,完整的源代码常见附件:
public class MainActivity extends Activity implements OnClickListener{
private ArrayList<String> arrayList = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for (int i = 0; i < 30; i++) {
arrayList.add("title" + i);
}
ListView listView = (ListView) findViewById(R.id.listView1);
BaseAdapter adapter = new BaseAdapter() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater layoutInflater = getLayoutInflater();
RelativeLayout inflate =
(RelativeLayout) layoutInflater.inflate(R.layout.list_item, null);
TextView textView = (TextView) inflate.findViewById(R.id.textView1);
String text = arrayList.get(position);
textView.setText(text );
Log.e("getView()", "getView:" + position + "RelativeLayout:" + inflate);
return inflate;
}
public int getCount() {
Log.e("getCount()", "getCount");
return arrayList.size();
}
public long getItemId(int position) {
return 0;
}
public Object getItem(int position) {
return null;
}
};
listView.setAdapter(adapter );
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
}
private void btn2OnClick() {
// TODO Auto-generated method stub
}
private void btn1OnClick() {
}
}