ListView
ListView是安卓的一种内容呈现方式,以前做过的音乐播放器就是用ListView呈现出来的,ListView可以自定义设置布局。
ListView由一排Item组件组成,每一个item都可以自定义布局,然后再把信息内容呈现出来。
我做的ListView练习是设置Item布局,然后从网上获取图片信息,再把图片在相应Item上面呈现出来。
Activity呈现页面代码
public class MsgListActivity extends BaseActivity {
private ListView lvMsg;
private ArrayList<User> userList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.msg_list_activity);
lvMsg = (ListView) findViewById(R.id.lvMsg);
initData();
MsgAdapter msgAdapter = new MsgAdapter(userList, this);
lvMsg.setAdapter(msgAdapter);
}
public void initData() {
// getLayoutInflater()
userList = new ArrayList<User>();
userList.add(new User("ly1",
"http://pic26.nipic.com/20121217/9252150_110558501000_2.jpg",
R.drawable.ic_launcher));
userList.add(new User(
"ly2",
"http://img0.imgtn.bdimg.com/it/u=1869402809,2463293159&fm=21&gp=0.jpg",
R.drawable.ic_photo_2));
userList.add(new User(
"ly3",
"http://www.xxjxsj.cn/article/UploadPic/2009-5/2009530163624615.jpg",
R.drawable.launch_1));
userList.add(new User(
"ly4",
"http://img0.imgtn.bdimg.com/it/u=1869402809,2463293159&fm=21&gp=0.jpg",
R.drawable.launch_2));
userList.add(new User(
"ly5",
"http://www.xxjxsj.cn/article/UploadPic/2009-5/2009530163624615.jpg",
R.drawable.launch_3));
userList.add(new User(
"ly6",
"http://img0.imgtn.bdimg.com/it/u=1869402809,2463293159&fm=21&gp=0.jpg",
R.drawable.launch_4));
}
public class User {
public String name;
public String headImg;
public int resId;
User() {
}
public User(String name, String headImg, int resId) {
super();
this.headImg = headImg;
this.name = name;
this.resId = resId;
}
}
}
适配器代码
public class MsgAdapter extends BaseAdapter {
private ArrayList<User> userList;
private Context context;
private ImageView mIvHead;
public MsgAdapter(ArrayList<User> userList, Context context) {
this.userList = userList;
this.context = context;
}
public int getCount() {
if (userList.size() == 0) {
return 0;
}
return userList.size();
}
public Object getItem(int position) {
return userList.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View view = View.inflate(context, R.layout.msg_list_item, null);
TextView mTvName = (TextView) view.findViewById(R.id.tvName);
mIvHead = (ImageView) view.findViewById(R.id.ivHead);
final User user = userList.get(position);
mTvName.setText(user.name);
new Thread() {
@Override
public void run() {
try {
Bitmap bm = ImageUtil.getImageHttpClientGet(user.headImg);
Message msg = new Message();
msg.what = 1;
msg.obj = bm;
handler.sendMessage(msg);
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
return view;
}
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
Bitmap bm = (Bitmap) msg.obj;
mIvHead.setImageBitmap(bm);
};
};
}
XML配置文件
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:text="xx"
android:textColor="#aaa"
android:textSize="20sp" />
<ImageView
android:id="@+id/ivHead"
android:layout_width="300dp"
android:layout_height="300dp"
android:src="@drawable/ic_launcher" />
<ListView
android:id="@+id/lvMsg"
android:layout_width="match_parent"
android:layout_height="match_parent"
></ListView>