初步認識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() {
}
}