Android编程实现在adapter中进行数据操作的方法

本文实例讲述了Android编程实现在adapter中进行数据操作的方法。分享给大家供大家参考,具体如下:

package com.cvte.apkclassify;
import java.util.ArrayList;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.graphics.drawable.Drawable;
import android.util.Log;
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 ItemAdapter extends BaseAdapter {
  private Context context;
  private LayoutInflater inflater;
  private PackageManager pManager ;
  private ArrayList<PackageInfo> apps;
  private ArrayList<ApkBean> allApkBeans;
  private ApkBean bean = new ApkBean();
  private DBUtils utils ;
  private ApplicationInfo appinfo;
  private static int ll = 1;
  public ItemAdapter(Context c) {
    super();
    this.context = c;
    pManager = context.getPackageManager();
    apps = (ArrayList<PackageInfo>) GetAllAppInfo.getAllapps(context);
    utils = new DBUtils(context);
    allApkBeans = (ArrayList<ApkBean>) utils.getAllRecords();
    for (int i = 0; i < apps.size(); i++) {
      bean = new ApkBean();
      bean.setApkname(pManager.getApplicationLabel(apps.get(i).applicationInfo).toString());
      bean.setKind(0);
      bean.setPackagename(apps.get(i).applicationInfo.packageName);
      utils.insert(bean);
    }
  }
  @Override
  public int getCount() {
    // TODO Auto-generated method stub
    return apps.size();
  }
  @Override
  public Object getItem(int position) {
    // TODO Auto-generated method stub
    return apps.get(position);
  }
  @Override
  public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 0;
  }
  @Override
  public View getView(int position, View view, ViewGroup parent) {
    ViewHolder holder = null;
    inflater = LayoutInflater.from(context);
    if (view==null) {
      holder = new ViewHolder();
      view = inflater.inflate(R.layout.listitem, null);
      holder.apkimage = (ImageView)view.findViewById(R.id.apkimage);
      holder.apkname =(TextView)view.findViewById(R.id.apkname);
      holder.result = (TextView)view.findViewById(R.id.result);
      view.setTag(holder);
    }else{
      holder=(ViewHolder)view.getTag();
    }
    if (allApkBeans==null||allApkBeans.size()==0) {
      PackageInfo pinfo = apps.get(position);
      String name = pManager.getApplicationLabel(pinfo.applicationInfo).toString();
      holder.apkimage.setBackgroundDrawable(pManager.getApplicationIcon(pinfo.applicationInfo));
      holder.apkname.setText(name);
      holder.result.setText("未分类");
    }else{
      ApkBean bean = allApkBeans.get(position);
      holder.apkimage.setBackgroundDrawable( getIconFromPackageName(bean.getPackagename()));
      holder.apkname.setText(bean.getApkname());
      if (bean.getKind()!=0) {
        holder.result.setText("已经分类");
      }else{
        holder.result.setText("未分类");
      }
    }
    return view;
  }
  class ViewHolder{
    public ImageView apkimage;
    public TextView apkname;
    public TextView result;
  }
  private Drawable getIconFromPackageName(String name){
    Drawable image = null ;
    try {
      appinfo = pManager.getApplicationInfo(name, PackageManager.GET_META_DATA);
      image = pManager.getApplicationIcon(appinfo);
    } catch (NameNotFoundException e) {
      Log.i("no packagename","no packagename");
    }
    return image;
  }
}

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android数据库操作技巧总结》、《Android编程之activity操作技巧总结》、《Android文件操作技巧汇总》、《Android编程开发之SD卡操作方法汇总》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》、《Android视图View技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

(0)

相关推荐

  • Adapter模式实战之重构鸿洋集团的Android圆形菜单建行

    对于很多开发人员来说,炫酷的UI效果是最吸引他们注意力的,很多人也因为这些炫酷的效果而去学习一些比较知名的UI库.而做出炫酷效果的前提是你必须对自定义View有所理解,作为90的小民自然也不例外.特别对于刚处在开发初期的小民,对于自定义View这件事觉得又神秘又帅气,于是小民决定深入研究自定义View以及相关的知识点. 在此之前我们先来看看洋神的原版效果图: 记得那是2014年的第一场雪,比以往时候来得稍晚一些.小民的同事洋叔是一位资深的研发人员,擅长写UI特效,在开发领域知名度颇高.最近洋叔刚

  • android开发中ListView与Adapter使用要点介绍

    1. Adapter.getView() public View getView(int position, View convertView , ViewGroup parent){...} 这个方法就是用来获得指定位置要显示的View.官网解释如下: Get a View that displays the data at the specified position in the data set. You can either create a View manually or infl

  • 举例讲解Android应用中SimpleAdapter简单适配器的使用

    SimpleAdapter,跟名字一样,一个简单的适配器,既为简单,就只是被设计来做简单的应用的,比如静态数据的绑定,不过仍然有自定义的空间,比如说在每一个ListItem中加一个按钮并添加响应事件.首先还是先看一下SimpleAdapter的定义吧,直接翻译下SDK doc 吧: 这是一个简单的适配器,可以将静态数据映射到XML文件中定义好的视图.你可以指定由Map组成的List(比如ArrayList)类型的数据.在ArrayList中的每个条目对应List中的一行.Maps包含每一行的数据

  • Android中的Adapter简单介绍

    Android中的Adapter在自定义显示列表时非常有用,比如SimpleAdapter,它的构造函数是: public SimpleAdapter (Context context, List> data, int resource, String[] from, int[] to) 它的各参数的意思: 1.context,上下文,SimpleAdapter关联的视图,一般而言就是当前的Activity,this 2.data,泛型的List,如ArrayList,Map或者HashMap

  • Android自定义viewgroup 使用adapter适配数据(6)

    在自定义viewgroup(5):http://www.jb51.net/article/100639.htm的基础上,添加使用adapter来适配数据,这样更加的方便,这里只是使用adapter适配数据,不能更新. package com.example.libingyuan.horizontallistview.ScrollViewGroup; import android.content.Context; import android.util.AttributeSet; import a

  • Android控件系列之相册Gallery&Adapter适配器入门&控件缩放动画入门

    学习目的: 1.掌握在Android中如何建立Gallery 2.初步理解Android适配器的原理 3.实现简单的控件缩放动画 简介: 1.Gallery是Android内置的一个控件,它可以继承若干图片甚至是其他控件 2.Gallery自带了滚动播放图片功能,此功能您可以通过模拟器拖曳鼠标或者在手机上拖拽验证 3.Gallery需要适配器来传输数据,如果您不熟悉"适配器设计模式",可以将适配器理解为某厂商的电脑适配器,只要这个厂商的所有型号的电脑都能使用该适配器,也就是说,设计新型

  • Android中BaseAdapter用法示例

    本文实例讲述了Android中BaseAdapter用法.分享给大家供大家参考,具体如下: 概述: BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView.Spinner.Gallery及GridView等UI显示组件,它是继承自接口类Adapter BaseAdapter Java代码: public class RecentAdapter extends BaseAdapter { private class RecentVi

  • 详解Android App中ViewPager使用PagerAdapter的方法

    PageAdapter是一个抽象类,直接继承于Object,导入包android.support.v4.view.PagerAdapter即可使用. 要使用PagerAdapter, 首先要继承PagerAdapter类,至少覆盖以下方法: 在每次创建ViewPager或滑动过程中,以下四个方法都会被调用,而instantiateItem和destroyItem中的方法要自己去实现. public abstract int getCount(); 这个方法,是获取当前窗体界面数 public a

  • Android中 自定义数据绑定适配器BaseAdapter的方法

    复制代码 代码如下: public class PersonAdapter extends BaseAdapter { private List persons;// 要绑定的数据 private int resource;// 绑定的一个条目界面的id,此例中即为item.xml private LayoutInflater inflater;// 布局填充器,它可以使用一个xml文件生成一个View对象,可以通过Context获取实例对象 public PersonAdapter(Conte

  • Android Adapter的几个常用方法

    Android Adapter的几个常用方法分享给大家,具体内容如下 1  ListView是在什么时候设置对Adapter的数据监听的? 在setAdapter(ListAdapter adapter)中,会先取消ListView中原来的mAdapter中的数据监听(mAdapter.unregisterDataSetObserver(mDataSetObserver);),然后再设置对新设置的adapter的数据监听. 2  getView(int position, View conver

  • Android listview与adapter详解及实例代码

    一个ListView通常有两个职责. (1)将数据填充到布局. (2)处理用户的选择点击等操作. 第一点很好理解,ListView就是实现这个功能的.第二点也不难做到,在后面的学习中读者会发现,这非常简单. 一个ListView的创建需要3个元素. (1)ListView中的每一列的View. (2)填入View的数据或者图片等. (3)连接数据与ListView的适配器. 也就是说,要使用ListView,首先要了解什么是适配器.适配器是一个连接数据和AdapterView(ListView就

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

    [引入] 我们一般编写listView的时候顺序是这样的:  •需要展示的数据集List<T>  •为这个数据集编写一个ListView  •为这个ListView编写一个Adapter,一般继承自BaseAdapter  •在BaseAdapter内部编写一个ViewHolder类,对应ListView里面的item控件,提高控件的查询效率 分析: List<T>:ListView --> Adapter extends BaseAdapter --> ViewHol

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

    在开发中,我们经常使用到ListView这个控件.Android的API也提供了许多创建ListView适配器的快捷方式.例如ArrayAdapter.SimpleAdapter和SimpleCursorAdapter等.但你是否发现,如果采用这些系统自带的适配器,对于事件的响应只能局限在一个行单位.假设一行里面有一个按钮和一个图片控件,它们之间的响应操作是不一样的.若采用系统自带的适配器,就不能精确到每个控件的响应事件.这时,我们一般采取自定义适配器来实现这个比较精确地请求. ListView

随机推荐