做过Androidy应用开发的同学都知道,ListView这个神奇的控件用途真的太广了,废话不多说,今天我就写一点关于ListView相关的内容吧!
首先我们还是从最基本的ListView开始,凡是控件都离不开布局,也就是.xml文件,首先我们在 .xml文件中定义一个ListView,如下:
<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" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<ListView
android:id="@+id/myListView"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</ListView>
</RelativeLayout>
接着呢,有了布局文件,我们当然要去得到这个对象的引用了,在Activity中都懂得,如下:
package chat.sunnyboy.lee.listviewdemo;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends ActionBarActivity {
private ListView myListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// String array[]={"first","second","third","forth","five"}; 定义一个数组来充当适配器的数据源
setContentView(R.layout.activity_main);
myListView = (ListView)findViewById(R.id.myListView);
myListView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,getData()));
}
//用List容器来充当数据源
public List<String> getData(){
List<String> data = new ArrayList<String>();
data.add("first");
data.add("second");
data.add("third");
data.add("forth");
return data;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
运行一下,你会发现,结果如下:
这里适配器的数据源设置主要是通过setAdapter()方法来设置的,我们直接在该方法中实例化了一个ArrayAdapter,里面的参数要注意一下,第一个是当前类,第二个为item(此时用的是系统的item类型),第三个为数据源,如下所示:
myListView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,getData()));
好了,如果你看懂了,就已经开始逐渐步入ListView这个控件的殿堂。