android 重写BaseAdapter类

来源:互联网 发布:保柏 知乎 编辑:程序博客网 时间:2024/05/21 04:25
1.自定义Adapter
主要继承的方法是getCount()和getView()
public class MyAdapter extends BaseAdapter {private LayoutInflater mInflater;public MyAdapter(Context context) {this.mInflater = LayoutInflater.from(context);}@Overridepublic int getCount() {return mData.size();}@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return 0;}@SuppressWarnings("all")@Overridepublic View getView(final int position, View convertView,ViewGroup parent) {ViewHolder holder = null;if (convertView == null) {holder = new ViewHolder();// 可以理解为从vlist获取view 之后把view返回给ListViewconvertView = mInflater.inflate(R.layout.listitem, null);holder.title = (TextView) convertView.findViewById(R.id.title);holder.info = (TextView) convertView.findViewById(R.id.info);holder.viewBtn = (Button) convertView.findViewById(R.id.view_btn);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.title.setText((String) mData.get(position).get("title"));holder.info.setText((String) mData.get(position).get("info"));holder.viewBtn.setTag(position);// 给Button添加单击事件 添加Button之后ListView将失去焦点 需要的直接把Button的焦点去掉holder.viewBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {showInfo(position);}});// holder.viewBtn.setOnClickListener(MyListener(position));return convertView;}}// ListItem中的实体类public final class ViewHolder {public TextView title;public TextView info;public Button viewBtn;}// 弹框的写法public void showInfo(int position) {ImageView img = new ImageView(ListViewActivity.this);img.setImageResource(R.drawable.b);new AlertDialog.Builder(this).setView(img).setTitle("详情" + position).setMessage("菜名:" + title[position] + "   价格:" + info[position]).setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}}).show();}


2.ListItem的布局文件
以后写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="70.0dip"    android:background="@drawable/item"    android:drawingCacheQuality="high"    android:minHeight="70.0dip"    android:orientation="horizontal" >    <ImageView        android:id="@+id/sItemIcon"        android:layout_width="80dip"        android:layout_height="60dip"        android:layout_marginLeft="10dip"        android:layout_marginTop="5dip"        android:background="@drawable/bg_img_coner"        android:padding="1dip"        android:scaleType="fitXY"        android:src="@drawable/b"         android:contentDescription="@string/app_name"/>    <TextView        android:id="@+id/title"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignTop="@+id/sItemIcon"        android:layout_centerVertical="true"        android:layout_marginLeft="20dip"        android:layout_toRightOf="@+id/sItemIcon"        android:gravity="center_vertical"        android:singleLine="true"        android:textColor="@color/listTitle"        android:textSize="20.0sp"        android:textStyle="bold" />    <TextView        android:id="@+id/info"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/title"        android:layout_marginLeft="20dip"        android:layout_marginTop="20dip"        android:layout_toRightOf="@id/sItemIcon"        android:ellipsize="marquee"        android:singleLine="true"        android:textColor="#ff4400"        android:textSize="12.0sp" />    <Button        android:id="@+id/view_btn"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentRight="true"        android:layout_centerVertical="true"        android:layout_marginRight="15dip"        android:background="@drawable/btn_detail_selecter"        android:text="@string/detail" /></RelativeLayout>

3.selector内容
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@drawable/btn_detail_normal" android:state_enabled="true" android:state_focused="false" android:state_pressed="false"/>    <item android:drawable="@drawable/btn_detail_pressed" android:state_enabled="true" android:state_pressed="true"/>    <item android:drawable="@drawable/btn_detail_pressed" android:state_enabled="true" android:state_focused="true"/></selector>
原创粉丝点击