1 定义适配器。
public class CloudFileInfoAdapter extends BaseAdapter{ private class ViewHolder { TextView filename; TextView filesize; ImageView fileicon; } private LayoutInflater mInflater = null; private Bitmap mIconBack = null,mIconfolder = null,mIcontxt = null; List<String> m_lsFileName = new ArrayList<String>(); List<Long> m_lsFileSize = new ArrayList<Long>(); List<Boolean> m_lsIsDir = new ArrayList<Boolean>(); public CloudFileInfoAdapter(Context context,List<String> fileName,List<Long> fileSize,List<Boolean> isDir){ mInflater = LayoutInflater.from(context); m_lsFileName = fileName; m_lsFileSize = fileSize; m_lsIsDir = isDir; mIconBack = BitmapFactory.decodeResource(context.getResources(),R.drawable.back); mIconfolder = BitmapFactory.decodeResource(context.getResources(),R.drawable.folder); mIcontxt = BitmapFactory.decodeResource(context.getResources(),R.drawable.txt); } @Override public int getCount() { return m_lsFileName.size(); } @Override public Object getItem(int position) { return m_lsFileName.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View view, ViewGroup parent) { ViewHolder holder; if(view == null) { view = mInflater.inflate(R.layout.fileitem, null); holder = new ViewHolder(); holder.fileicon = (ImageView) view.findViewById(R.id.icon); holder.filename = (TextView) view.findViewById(R.id.filename); holder.filesize = (TextView) view.findViewById(R.id.filesize); view.setTag(holder); } else { holder = (ViewHolder)view.getTag(); } holder.filename.setText(m_lsFileName.get(position)); holder.filesize.setText(m_lsFileSize.get(position).toString()); if(m_lsIsDir.get(position)) { holder.fileicon.setImageBitmap(mIconfolder); } else { holder.fileicon.setImageBitmap(mIcontxt); } return view; } }
2 定义ListView中单项布局(fileitem.xml),其中注意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="fill_parent" android:background="#ffffff" android:orientation="horizontal" > <!--撑起ListItemView--> <TextView android:layout_height="50dp" android:layout_width="1dip" android:id="@+id/first" android:layout_alignParentLeft="true" /> <ImageView android:id="@+id/icon" android:layout_width="35dip" android:layout_height="35dip" android:layout_toRightOf="@id/first" android:layout_centerVertical="true" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_toRightOf="@id/icon" android:orientation="vertical"> <TextView android:id="@+id/filename" android:layout_width="fill_parent" android:layout_height="30dp"/> <TextView android:id="@+id/filesize" android:layout_width="fill_parent" android:layout_height="20dp"/> </LinearLayout> </RelativeLayout>
3 定义整体布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/filePath" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" android:textSize="18sp"/> <ListView android:id="@id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>
4 使用该适配器,注意需要继承ListActivity
public class PersonalFileActivity extends ListActivity { ... setListAdapter(new CloudFileInfoAdapter(PersonalFileActivity.this, m_lsFileName, m_lsFileSize,m_lsIsDir)); ... }