`
liuxiang123
  • 浏览: 30476 次
  • 性别: Icon_minigender_1
  • 来自: 四川
社区版块
存档分类
最新评论

ListView自定义adapter

阅读更多



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

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

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

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

	private Context context;

	private int mresource;

	private LayoutInflater mInflater;
	

	public FileListAdapter(List<FileItem> 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<ParamHandle> params = new ArrayList<ParamHandle>();
				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的布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    			android:id="@id/file_item" 
    			android:layout_width="fill_parent"
    			android:layout_height="@dimen/listview_item_height">
    			
    	<ImageView android:id="@id/file_item_icon" android:layout_alignParentLeft="true" 
    	    android:layout_marginLeft="@dimen/listview_item_img_margin_left" 
    	    android:layout_centerVertical="true"
    	    android:layout_width="@dimen/listview_item_text_thumb_width" 
    	    android:layout_height="@dimen/listview_item_text_thumb_width"/>
    	<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" 
    	    android:layout_height="wrap_content" android:layout_marginLeft="@dimen/listview_item_text_margin_left"
    	    android:layout_marginRight="@dimen/listview_item_text_margin_left"
    	    android:layout_toRightOf="@id/file_item_icon" android:layout_centerVertical="true">
    	    	<TextView  android:id="@id/file_item_text" 
    	    	   style="@style/file_name_sty" android:singleLine="true" android:ellipsize="middle"
    	    	    android:layout_width="wrap_content" android:layout_height="wrap_content"/>
    	    	<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent"
    	    	     android:layout_height="wrap_content" android:layout_marginTop="@dimen/listview_item_text_margin_top">
    	    	    <TextView android:id="@id/iv_file_item_filesize" android:layout_width="wrap_content"
    	    	        android:layout_height="wrap_content" style="@style/file_desc_sty" android:visibility="gone"/>
    	    	    <TextView android:id="@id/iv_file_item_filetime" android:layout_width="wrap_content" 
    	    	        android:layout_height="wrap_content" style="@style/file_desc_sty" android:visibility="gone"/>
    	    	</LinearLayout>    	
    	</LinearLayout>
    	<Button android:id="@id/file_item_btn"  android:layout_width="wrap_content"
    	     android:layout_height="fill_parent" android:layout_alignParentRight="true"
    	     android:focusable="false"/>
</RelativeLayout>
 
 效果如下:

 

  • 描述: 效果图
  • 大小: 325.4 KB
分享到:
评论

相关推荐

    安卓listview自定义adapter

    安卓listview自定义adapter包括demo和一些其他自定义绑定的代码

    listview 自定义adapter的例子demo

    示例中的"adapter"文件可能包含了实现以上步骤的代码,包括自定义Adapter类、数据模型类以及展示数据的布局文件。在实际开发中,你可能还需要处理点击事件、优化视图复用等高级功能。 总之,自定义ListView的...

    ListView自定义Adapter实现多视图Item

    通过以上步骤,我们就可以实现ListView自定义Adapter的多视图Item功能。这不仅可以使列表更具多样性,还可以提升用户体验。在处理复杂数据展示时,这是非常实用的一种技术。在实际开发中,我们还可以进一步优化,...

    Android ListView 自定义adapter好友列表

    本文将深入探讨如何使用自定义Adapter来创建一个功能丰富的Android ListView好友列表。 首先,我们需要理解ListView的工作原理。ListView依赖于Adapter来提供数据和视图之间的桥梁。Adapter是连接数据源(如...

    listview自定义Adapter实现仿qq页面

    本项目旨在教你如何通过自定义Adapter来实现一个仿QQ页面的ListView效果。自定义Adapter是Android开发中的一个重要环节,它允许我们根据需求定制ListView的显示样式和交互方式。 首先,理解ListView的工作原理至关...

    Android自定义adapter的listview

    为了实现更加灵活和丰富的界面展示,我们通常需要对ListView进行自定义,这涉及到自定义Adapter的使用。自定义Adapter允许我们根据需求定制ListView的每一项视图,以适应不同的数据结构和界面设计。 首先,我们需要...

    Listview自定义Adapter显示省名并响应item事件

    本教程将深入讲解如何使用自定义Adapter来显示省名,并响应ListView中的item点击事件。Adapter是连接ListView和数据源的关键,它负责将数据转化为ListView可显示的视图。 首先,我们需要创建一个自定义的Adapter类...

    Android ListView自定义Adapter实现仿QQ界面

    Android ListView自定义Adapter实现仿QQ界面 Android ListView自定义Adapter实现仿QQ界面是一种常见的Android应用程序开发技术,通过自定义Adapter实现ListView的显示,可以满足用户的个性化需求。下面将详细介绍...

    Android开发中ListView自定义adapter的封装

    总结,封装ListView自定义Adapter是Android开发中的常见实践,它能帮助我们更好地管理代码,减少重复工作,并提高应用的性能。通过抽象ViewHolder和创建通用的Adapter,我们可以轻松地应对各种不同的ListView需求,...

    ListView中使用自定义Adapter及时更新数据

    本篇将详细讲解如何在ListView中使用自定义Adapter来实现数据的及时更新。 首先,我们需要理解ListView的工作原理。ListView通过Adapter来与数据源进行交互,Adapter是连接数据集和视图的桥梁。它负责从数据集中...

    Android之自定义Adapter的ListView

    自定义Adapter是为了更灵活地控制ListView中的每个列表项的行为和外观。在自定义Adapter时,我们需要实现四个核心方法:`getCount()`、`getItem(int position)`、`getItemId(int position)`和`getView(int position,...

    Flutter学习之旅(六)----ListView控件自定义Adapter以及带参数跳转

    Flutter学习之旅(六)----ListView控件自定义Adapter以及带参数跳转,博客对应地址:http://blog.csdn.net/zhangxiangliang2/article/details/76383244

    自定义Adapter适应ListView和GridView

    自定义Adapter是实现这两种视图高效、灵活展示数据的关键。本文将深入解析如何根据CSDN鸿洋大神的博客,自定义一个通用的Adapter,以满足不同场景下的ListView和GridView的适配器需求。 首先,理解Adapter的作用。...

    Android自定义Adapter适配器

    本项目聚焦于自定义Adapter的实现,特别是如何将其应用于ListView的数据显示。 首先,理解Adapter的基本原理是关键。Adapter是一个接口,它的主要职责是将数据模型转换为视图,以便在UI组件如ListView、GridView或...

    Android自定义Adapter的ListView的思路及代码

    下面我们将详细探讨自定义Adapter与ListView结合使用的思路及代码实现。 首先,自定义Adapter的关键在于它能够根据数据集生成相应的视图,并将这些视图添加到ListView中。数据集通常是一个包含多个条目的集合,每个...

    优化后的ListView(自定义Adapter).zip

    优化后的ListView(自定义Adapter).zip

    自定义listview的item控件

    `自定义adapter更改listview中的布局`文件名暗示了我们需要为ListView的每个Item创建单独的布局文件。在`getView()`中,根据需要加载对应的XML布局文件,然后填充数据。 总结起来,自定义ListView的Adapter是...

    Android中ListView+Adapter

    本文将深入探讨如何在Eclipse开发环境中利用ListView结合Adapter来展示数据。 首先,`ListView`是一个可滚动的视图,用于显示一组项目,每个项目都是一个单独的视图。它通过复用视图(ViewHolder模式)提高性能,...

    GridView用自定义Adapter

    当我们需要显示的数据不满足默认Adapter提供的功能时,自定义Adapter就显得尤为重要。本篇将深入探讨如何为GridView创建自定义Adapter,以实现更灵活、个性化的数据展示。 首先,了解Adapter的基本概念。Adapter是...

Global site tag (gtag.js) - Google Analytics