Urchindong 2011-08-01
举个简单的例子来回顾下吧。我们知道在我们手机上,通讯录是这样布局的,一行分为姓名和对应的号码,或者是姓名在上,对应的号码在姓名的下面。我简要说明一下思路吧,在编码实现时,我们需要先创建LinearLayout(当然啦,也可以在xml文件中布局)对象和ListView对象,LinearLayout用来显示ListView,接着通过ListAdapter将获取到的通讯录数据与ListView链接起来;接着将ListAdapter添加到ListView中;最后将ListView添加到LinearLayout中,让屏幕显示LinearLayout,要处理ListView事件,需要为ListView视图添加setOnItemSelectedListener监听以及setOnItemClickListener监听。注意,不要忽略了权限哦。在API文档中,Dev Guide一栏下,看左侧栏目,往下拉,找到<uses-permission>就可以了,涵盖了android手机中所使用的所有权限。
以上是我们自己简单的创建的,但在开发中,我们有时需要自己来设计自己所需要的布局。这时就需要继承BaseAdapter,重写它的getView方法。代码如下参照下吧:
public class MyAdapter extends BaseAdapter {
private LayoutInflater mInflater;
public MyAdapter(Context context) {
this.mInflater = LayoutInflater.from(context);
}
public int getCount() {
return mData.size();
}
public Object getItem(int arg0) {
return mData.get(arg0);
}
public long getItemId(int arg0) {
return arg0;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.leftview, null);
holder.titleText = (TextView) convertView.findViewById(R.id.titleleftlist);
holder.infoText = (TextView) convertView.findViewById(R.id.infoleftlist);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.titleText.setText((String) mData.get(position).get("title"));
holder.infoText.setText((String) mData.get(position).get("info"));
if (position == selectItem) {
convertView.setBackgroundColor(Color.RED);
}
else {
convertView.setBackgroundColor(Color.TRANSPARENT);
}
//convertView.getBackground().setAlpha(80);
return convertView;
}
public void setSelectItem(int selectItem) {
this.selectItem = selectItem;
}
private int selectItem=-1;
}
}
很容易就能看出来有个position,只要拥有这个position,那很容易解决了。就是红色标注的if(){}else{}中的语句。简单吧。