ListView自定义adapter



 在android列表应用中我们通常会用到listView这个控件,她自带的几种适配器往往不能够满足我们日常开发中的需要,这里我们就必须自定义适配器来完成。(文笔不好,加上是新手,当给自己备份)

         前写日子看了下360网盘顺便实现了一下他的一个页面。这里我采用了FileListAdapter自定义的一个适配器。注意---listView有时候会调用多次getView()方法往往是布局文件配置的问题改成fill_parent就ok

/**
 * 文件显示列表 显示文件夹 文件名 操作按钮 如果是文件 则还要显示文件的大小和更改时间
 */
public class FileListAdapter extends BaseAdapter {

	private List files = null; // 数据源列表。自定义传入数据结构

	private Context context;

	private int mresource;

	private LayoutInflater mInflater;
	

	public FileListAdapter(List files, int resource, Context context) {
		this.context = context;
		this.files = files;
		this.mresource = resource;
		this.mInflater = LayoutInflater.from(context);
	}
	public int getCount() { // 取得数据源的大小
		return files.size();
	}
	public FileItem getItem(int position) { // 得到position位置的List的一行
		return files.get(position);
	}
	public long getItemId(int position) {
		return position;
	}
	/**
	 * convertView 一个Item也就是当前定义的一行显示的样式
	 */
	public View getView(int position,  View convertView, final ViewGroup parent) {
		if (convertView == null) {
			convertView = mInflater.inflate(mresource, parent, false);
		}
		FileItem file = getItem(position);
		if (file == null) {
			return convertView;
		}
		ImageView fileImage = (ImageView) convertView
				.findViewById(R.id.file_item_icon);
	        TextView fileItemText = (TextView) convertView
				.findViewById(R.id.file_item_text);
		TextView filetime = (TextView) convertView
				.findViewById(R.id.iv_file_item_filetime);
		TextView filesize = (TextView) convertView
				.findViewById(R.id.iv_file_item_filesize);
		int fileType = file.getFileType();
		String fileName = file.getFileName();
		setImageView(fileType, fileName, fileImage);
		setFileItemView(fileType, fileName, fileItemText);
		setFileSizeView(fileType, file.getFilesize(), filesize);
		setFileTimeView(fileType, file.getFiletime(), filetime);
		convertView.setBackgroundDrawable(convertView.getResources()
				.getDrawable(R.drawable.action_item_btn));
		Button button = (Button) convertView.findViewById(R.id.file_item_btn);
		button.setBackgroundResource(R.drawable.file_operate);
		button.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				//点击右边button的popupwindow事件
				View menuView = View.inflate(context, R.layout.menu_edit, null);
				ParamHandle param = new ParamHandle("bottomMenu", View.inflate(context, R.layout.bottom_menu, null));
				List params = new ArrayList();
				params.add(param);
				ListMenuPopWindow popWindow = new ListMenuPopWindow(v, menuView,  LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, params);
				popWindow.showToggle();
			}
		});
		return convertView;
	}

	private void setImageView(int fileType, String fileName, ImageView view) {
		if (fileType == 0) {
			view.setBackgroundResource(R.drawable.folder);
		}
		if (fileType == 1) {
			view.setBackgroundResource(R.drawable.folder_photo);
		} else {
		}
	}

	private void setFileItemView(int fileType, String fileName, TextView view) {
		view.setText(fileName);
	}

	private void setFileTimeView(int fileType, String filetime, TextView view) {
		if (fileType == 0 || fileType == 1) {
			view.setVisibility(View.GONE);
		} else {
			view.setText("修改时间:" + filetime);
		}
	}

	private void setFileSizeView(int fileType, int filesize, TextView view) {
		if (fileType == 0 || fileType == 1) {
			view.setVisibility(View.GONE);
		} else {
			view.setText(filesize);
		}
	}
其中的listItem的布局文件


    			
    	
    	
    	    	
    	    	
    	    	    
    	    	    
    	    	    	
    	
    	
 
 效果如下:
ListView自定义adapter_第1张图片

 

你可能感兴趣的:(android开发)