ListView中的Item界面
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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/file_icon"
android:layout_width="wrap_content"
android:layout_height="35dip"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true" />
<TextView
android:id="@+id/file_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/file_icon"
android:gravity="center_vertical"
android:listSelector="@android:color/transparent"
android:textColor="#000"
android:textSize="18sp" />
<CheckBox
android:id="@+id/item_cb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="10dip"
android:button="@null"
android:clickable="false"
android:drawableRight="@drawable/selector_fileitem_checkbox"
android:focusable="false"
android:focusableInTouchMode="false"
android:visibility="visible"
/>
</RelativeLayout>
-------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/checked_icon" android:state_checked="true"></item>
<item android:drawable="@drawable/checked_icon" android:state_selected="true"></item>
<item android:drawable="@drawable/checked_icon" android:state_pressed="true"></item>
<item android:drawable="@drawable/check_icon"></item>
</selector>
继承BaseAdapter,并重写相关方法
public class MyAdapter extends BaseAdapter {
Context mContext;
List<Object> data;
private LayoutInflater lf;
public MyAdapter(Context mContext, List<Object> data) {
this.mContext = mContext;
this.data = data;
this.lf = LayoutInflater.from(mContext);
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder_BrowseFileItem holder = null;
if (convertView == null) {
convertView = lf.inflate(R.layout.view_fileitem, null);
holder = new ViewHolder_BrowseFileItem();
holder.name = (TextView) convertView.findViewById(R.id.file_name);
holder.icon = (ImageView) convertView.findViewById(R.id.file_icon);
holder.item_cb = (CheckBox) convertView.findViewById(R.id.item_cb);
convertView.setTag(holder);
holder.delete_btn.setTag(position);
} else {
holder = (ViewHolder_BrowseFileItem) convertView.getTag();
}
holder.name.setText("balabala");
holder.item_cb.setVisibility(View.VISIBLE);
holder.item_cb.setChecked(true);
holder.delete_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int detail_btn_position = (int) v.getTag();
data.remove(detail_btn_position);
MyAdapter.this.notifyDataSetChanged();
}
});
……
return convertView;
}
/**
* 头部添加一条新数据,并更新显示
* @param object
*/
public void addItem(Object object) {
data.add(0,object);
this.notifyDataSetChanged();
}
/**
* 更换整个数据集,并更新显示
* @param data
*/
public void changeDataSet(List<Object> data) {
this.data = data;
this.notifyDataSetChanged();
}
private class ViewHolder_BrowseFileItem {
public TextView name;
public ImageView icon;
public CheckBox item_cb;
public Button delete_btn;
}
}
给ListView设置adapter
MyAdapter myAdapter=new MyAdapter(mContext,data);
file_listview.setAdapter(myAdapter);