`

自定义BaseAdapter,实现列表显示功能

 
阅读更多
public class AppInfo{  
	public String appName = null;//应用程序名
	public Drawable icon = null;//应用程序图片
	
}

 

 

import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class ListViewAdapter extends BaseAdapter{

	    private Context context;
	    private List<AppInfo> appList;

	    public ListViewAdapter(Context context, List<AppInfo> appList)
	    {
	        this.context = context;
	        this.appList = appList;
	    }

	    @Override
	    public int getCount()
	    {
	        // TODO Auto-generated method stub
	        return appList.size();
	    }

	    @Override
	    public Object getItem(int position)
	    {
	        // TODO Auto-generated method stub
	        return appList.get(position);
	    }

	    @Override
	    public long getItemId(int position)
	    {
	        // TODO Auto-generated method stub
	        return 0;
	    }

	    @Override
	    public View getView(int position, View convertView, ViewGroup parent)
	    {
	        // TODO Auto-generated method stub
	        View view = null;
	        ViewHolder holder = null;

	        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

	        if (convertView == null)
	        {
	            view = inflater.inflate(R.layout.list_item, null);
	            holder = new ViewHolder(view);
	            view.setTag(holder);
	        } else
	        {
	            view = convertView;
	            holder = (ViewHolder) convertView.getTag();
	        }        
	        AppInfo appInfo = (AppInfo)getItem(position);
	        holder.tvInfo.setText(appInfo.appName);
	        holder.imgInfo.setImageDrawable(appInfo.icon);
	        return view;
	    }

	    class ViewHolder
	    {
	        TextView tvInfo;
	        ImageView imgInfo;

	        public ViewHolder(View view)
	        {
	            tvInfo = (TextView) view.findViewById(R.id.tv01);
	            imgInfo = (ImageView) view.findViewById(R.id.img01);
	        }
	    }

	}

 

 

 

import android.app.Activity;
import android.app.AlertDialog;
import android.content.pm.PackageInfo;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.ListView;
import java.util.*;

public class MyActivity extends Activity {
	
	    private ListView listView = null;
	    private List<AppInfo> appList = new ArrayList<AppInfo>();
	    private List<PackageInfo> manager = null;

	    @Override
	    public void onCreate(Bundle savedInstanceState)
	    {
	        super.onCreate(savedInstanceState);
	        setContentView(R.layout.main);

	        listView = (ListView) findViewById(R.id.mylist);

	        manager = getPackageManager().getInstalledPackages(0);
	        for (int i = 0; i < manager.size(); i++)
	        {
	            PackageInfo packageInfo = manager.get(i);
	            //应用程序信息存储到appinfo里
	            AppInfo appInfo = new AppInfo();
	            appInfo.appName = packageInfo.applicationInfo.loadLabel(getPackageManager()).toString();
	            appInfo.icon = packageInfo.applicationInfo.loadIcon(getPackageManager());
	            appList.add(appInfo);
	        }
	        
	        ListViewAdapter adapter = new ListViewAdapter(this, appList);
	        listView.setAdapter(adapter);
	    }
	}

 

 

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    
    <ImageView 
        android:id="@+id/img01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />
    <TextView  
        android:id="@+id/tv01"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"         
        />
</LinearLayout>

 

 

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <ListView
        android:id="@+id/mylist"  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="@string/hello"
        />
</LinearLayout>

 

1
0
分享到:
评论

相关推荐

    ListView的使用自定义BaseAdapter

    通过这种方式,你可以灵活地展示各种类型的数据,并且可以通过扩展Adapter来实现更复杂的功能,如点击事件、长按事件等。在实际项目中,还可以结合AsyncTask或其他异步加载机制,实现数据的动态加载和更新,提升用户...

    可复用的自定义BaseAdapter

    可能是展示自定义BaseAdapter在实际应用中的截图,显示了适配器如何将数据呈现到屏幕上的视图组件中,比如ListView的各个条目。 通过以上所述,我们可以理解自定义BaseAdapter在Android开发中的重要性和实现方式,...

    Android自定义BaseAdapter

    本篇文章将深入探讨如何自定义`BaseAdapter`,以实现更高效、更灵活的数据展示。 首先,理解`BaseAdapter`的作用至关重要。`BaseAdapter`是Android提供的一个抽象类,它实现了`ListAdapter`接口,主要用于为各种...

    自定义AutoCompleteTextView下拉列表控件

    在给定的标题“自定义AutoCompleteTextView下拉列表控件”中,我们可以理解为开发者想要超越Android原生`AutoCompleteTextView`的功能,创建一个更加定制化的版本,以满足特定需求。描述中提到“扩展Android系统自带...

    基于BaseAdapter实现仿IOS侧滑菜单

    通过以上步骤,我们就能利用BaseAdapter实现一个功能完备、交互流畅的仿iOS侧滑菜单。在实际项目中,还可以结合其他组件和设计模式,如Fragment来更好地管理菜单和主要内容视图的交互,提升应用的用户体验。

    实现列表功能的实例 可以实现用户自定义功能

    本实例将聚焦于“实现列表功能的实例”,并讨论如何创建一个用户可自定义的列表,以适应不同用户的需求。 首先,我们需要理解列表框(ListBox)的概念。列表框是一种用户界面控件,通常用于显示一组可选择的项目。...

    实现ListView过滤功能,继承于BaseAdapter,非ArrayAdapter。

    以上就是如何在不使用ArrayAdapter的情况下,通过继承BaseAdapter实现ListView的过滤功能。这个过程涉及到了数据源管理、过滤逻辑的实现以及适配器与ListView之间的通信,是一个比较全面的Android组件定制案例。通过...

    Android 自定义ListView和RecycleView实现多级树功能

    综上所述,实现一个类似QQ分组列表的多级树功能,需要结合数据模型、自定义Adapter、视图复用机制以及交互逻辑等多个方面进行开发。尽管ListView和RecyclerView有各自的实现方式,但核心思想是一致的,都是为了有效...

    webview与ListView、BaseAdapter实现方法

    1. 自定义列表项布局:包含一个`ImageView`显示图标,`TextView`展示名称和描述,以及`WebView`展示评分等复杂内容。 2. 数据模型:每个应用作为一个对象,包含图标、名称、描述和HTML格式的评分信息。 3. 自定义`...

    自定义listView实现滑动显示删除按钮

    然而,为了提供更好的用户体验,开发者经常需要对其进行自定义,例如实现滑动显示删除按钮的功能。这个功能在很多应用中都可以看到,比如邮件客户端,用户滑动邮件条目时,会显示出一个删除按钮,方便快速清理不需要...

    Android基础编程-BaseAdapter创建列表.pptx

    BaseAdapter提供了四个主要的抽象方法,开发者需要重写这些方法以实现自定义功能: 1. `getCount()`: 这个方法返回列表中的条目总数。你需要根据实际数据源的大小返回正确的数值。 2. `getItem(int position)`: 此...

    android demo,baseAdapter的应用

    在创建自定义BaseAdapter时,你需要继承BaseAdapter并实现以上方法。首先,你需要创建一个包含数据的列表,可以是ArrayList或其他集合类型。然后,为每个列表项创建一个布局,并在`getView()`方法中设置相应的数据。...

    listview 通过继承BaseAdapter来实现

    本篇将详细讲解如何通过继承BaseAdapter来实现ListView的功能,这对于初学者来说是非常重要的基础知识。 1. **ListView的基本概念** - ListView是Android中的一个可滚动视图,它能显示一行行的数据,并且可以在...

    BaseAdapter实现的GalleryDemo

    通过这个示例,开发者可以学习如何利用`BaseAdapter`自定义数据源,结合`Gallery`组件,创建一个功能丰富的图片浏览应用。同时,这也是Android开发中数据驱动视图的经典案例,对于理解Android的UI设计模式有着重要的...

    BaseAdapter源码

    本文将深入探讨BaseAdapter的实现原理,包括其核心功能、工作流程以及如何自定义BaseAdapter。 1. **BaseAdapter的基本结构** BaseAdapter是一个抽象类,它实现了Adapter接口,并提供了与数据源交互的方法。在...

    baseAdapter

    总结一下,`baseAdapter` 是一种自定义的适配器实现,用于`RecyclerView`,它结合了`Adapter` 和`ViewHolder` 的概念,以提供更高效的列表渲染和更方便的开发体验。在`RecyclerView` 中使用自定义适配器能够更好地...

    android 自定义ListView实现单选

    本篇文章将详细探讨如何通过自定义ListView来实现单选功能,旨在帮助开发者解决这一问题。 一、自定义ListView的必要性 系统自带的ListView默认并未提供单选模式,而是多选或全选。当用户需要在列表中选择一个项目...

    ListView和BaseAdapter搭配Button点击事件获取不同Item

    在Android开发中,ListView是一种常用的控件,用于展示大量数据列表。...在实际开发中,这有助于实现更丰富的交互功能,如删除、编辑列表项等。记住,理解ListView的复用机制以及如何正确处理点击事件是关键。

    baseadapter

    - RecyclerView是后来推出的更灵活的列表组件,虽然不直接继承自BaseAdapter,但可以通过AdapterView的抽象父类实现类似功能。 7. **最佳实践** - 数据源的变化应该触发Adapter的`notifyDataSetChanged()`方法,...

    Android中ListView,SQLite,BaseAdapter的结合[参照].pdf

    然而,通常情况下,自定义BaseAdapter会涉及到以下几个步骤: - 继承BaseAdapter类。 - 实现四个核心方法:getCount()、getItem(int position)、getItemId(int position)和getView(int position, View convertView, ...

Global site tag (gtag.js) - Google Analytics