Step 1: 毫无疑问,你首先要有一个主界面 (activity_main.xml)
<LinearLayout 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:orientation="vertical"
tools:context=".MainActivity" >
<ListView
android:id="@+id/main_listview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
</ListView>
</LinearLayout>
这里主要讲述ListView的使用,就不写太多其他的东西了!
Step 2: 接下来,你还需要为ListView的子项定义一个布局 (activiaty_main_listitem.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/user_head_icon"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_margin="15dp"
/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/user_nickname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textStyle="bold"
android:layout_marginTop="15dp"
/>
<TextView
android:id="@+id/user_sign_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/user_nickname"
android:textSize="12sp"
android:textStyle="bold"
android:layout_marginTop="8dp"
/>
</RelativeLayout>
</LinearLayout>
Step 3: 接下来就是我们的 MarsterAdapter.java (模板适配器) 啦
public abstract class MarsterAdapter<T> extends BaseAdapter{
private List<T> list = new ArrayList<T>();
private Context context;
private int itemViewId;
public MarsterAdapter(Context context,int itemViewId,List<T> list){
this.context = context;
this.itemViewId = itemViewId;
this.list = list;
}
public Context getContext(){
return context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public T getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parents) {
if(convertView==null){
convertView = LayoutInflater.from(context).inflate(itemViewId, null);
initItem(position, convertView, parents);
}else{
reloadItem(position, convertView, parents);
}
return convertView;
}
protected abstract void initItem(int position, View convertView, ViewGroup parents) ;
protected abstract void reloadItem(int position, View convertView, ViewGroup parents) ;
}
Step 4: 好了,模板适配器已经写好了,接下来我们要实现我们的用户列表所用的Adapter(UserAdapter.java)
public class UserAdapter extends MarsterAdapter<User>{
private UserHolder holder;
public UserAdapter(Context context, int itemViewId, List<User> list) {
super(context, itemViewId,list);
}
@Override
protected void initItem(int position, View convertView, ViewGroup parents) {
// TODO Auto-generated method stub
holder = new UserHolder();
holder.headIcon = (ImageView) convertView.findViewById(R.id.user_head_icon);
holder.nickName = (TextView) convertView.findViewById(R.id.user_nickname);
holder.signText = (TextView) convertView.findViewById(R.id.user_sign_text);
setHolderView(position, convertView, parents, holder);
convertView.setTag(holder);
}
@Override
protected void reloadItem(int position, View convertView, ViewGroup parents) {
// TODO Auto-generated method stub
holder = (UserHolder) convertView.getTag();
setHolderView(position, convertView, parents, holder);
}
private void setHolderView(int position, View convertView, ViewGroup parents,UserHolder holder){
holder.headIcon.setImageDrawable(getContext().getResources().getDrawable(getItem(position).getHeadIcon()));
holder.nickName.setText(getItem(position).getNickName());
holder.signText.setText(getItem(position).getSignText());
}
class UserHolder{
ImageView headIcon;
TextView nickName;
TextView signText;
}
}
Step 5: 最后就是我们的列表界面了 MainActivity.java
public class MainActivity extends Activity {
private ListView listView;
private UserAdapter adapter;
private List<User> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
initData();
}
public void initViews(){
list = new ArrayList<User>();
adapter = new UserAdapter(this, R.layout.activity_mail_listitem, list);
listView = (ListView) findViewById(R.id.main_listview);
listView.setAdapter(adapter);
}
public void initData(){
for(int i=0; i<20; i++){
User user = new User();
user.setHeadIcon(R.drawable.header);
user.setNickName("kael"+i);
user.setSignText("每天努力一丢丢,成就大牛的人生!"+i);
list.add(user);
}
adapter.notifyDataSetChanged();
}
}