Android:BaseAdapter优化之ViewHolder 显示系统已经安装应用并打开
来源:互联网 发布:比价神器 软件下载 编辑:程序博客网 时间:2024/06/07 03:03
acitvity代码:
package com.zou.showsysapp;import java.util.List;import java.util.Map;import android.content.Intent;import android.content.pm.ApplicationInfo;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;public class ShowSystemAppActivity extends ActionBarActivity { private List<ApplicationInfo> packages; private List<Map<String, Object>> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); packages = getPackageManager().getInstalledApplications(0); ListView lv = (ListView) findViewById(R.id.lv_app); lv.setAdapter(new MyAdapter()); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { ApplicationInfo appInfo = packages.get(arg2); Intent intent = getPackageManager().getLaunchIntentForPackage(appInfo.packageName); startActivity(intent); } }); } private class MyAdapter extends BaseAdapter { public void Query() { } @Override public int getCount() { return packages.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = new ViewHolder(); if (null == convertView) { convertView = getLayoutInflater().inflate(R.layout.item, null); viewHolder.icoImageView = (ImageView) convertView.findViewById(R.id.iv_app_ico); viewHolder.appname = (TextView) convertView.findViewById(R.id.tv_app_name); viewHolder.packegename = (TextView) convertView .findViewById(R.id.tv_app_packege_name); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } // 获得包名 ApplicationInfo app = (ApplicationInfo) packages.get(position); String packageName = app.packageName; viewHolder.packegename.setText(packageName); // 获得图标 Drawable dr = getPackageManager().getApplicationIcon(app); viewHolder.icoImageView.setImageDrawable(dr); String label = ""; try { label = getPackageManager().getApplicationLabel(app).toString(); viewHolder.appname.setText(label); } catch (Exception e) { Log.i("Exception", e.toString()); } return convertView; } } public class ViewHolder { public ImageView icoImageView; public TextView appname; public TextView packegename; }}
xml布局:
main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" tools:context="com.zou.showsysapp.ShowSystemAppActivity" > <ListView android:id="@+id/lv_app" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true" > </ListView></RelativeLayout>
item.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="62dp" android:layout_marginRight="5dp" android:gravity="center_vertical" > <ImageView android:id="@+id/iv_app_ico" android:layout_width="60dp" android:layout_height="60dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:gravity="center" android:src="@drawable/ic_launcher" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="2dp" android:layout_toRightOf="@+id/iv_app_ico" android:gravity="center_vertical" android:orientation="vertical" > <TextView android:id="@+id/tv_app_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:layout_weight="1" android:text="app_name" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/tv_app_packege_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:layout_weight="1" android:text="app_packege_name" android:textAppearance="?android:attr/textAppearanceMedium" /> </LinearLayout></RelativeLayout>
0 0
- Android:BaseAdapter优化之ViewHolder 显示系统已经安装应用并打开
- 利用ViewHolder优化BaseAdapter
- BaseAdapter使用ViewHolder优化
- Android中的自定义Adapter(继承自BaseAdapter)——与系统Adapter的调用方法一致——含ViewHolder显示效率的优化
- Android中的自定义Adapter(继承自BaseAdapter)——与系统Adapter的调用方法一致——含ViewHolder显示效率的优化
- Android中的自定义Adapter(继承自BaseAdapter)——与系统Adapter的调用方法一致——含ViewHolder显示效率的优化
- ViewHolder优化BaseAdapter的思路:
- 利用ViewHolder优化自定义BaseAdapter
- android 获取系统已经安装的应用
- Android复写BaseAdapter并显示ListView视图
- 利用ViewHolder优化BaseAdapter(ListView)
- android ListView的优化之 static ViewHolder
- Android自定义adapter优化之ViewHolder
- Android BaseAdapter和ViewHolder 优化 解决ListView的item抢焦点问题和item错乱问题
- Android ListView封装(代码优化):抽取方法共性,封装 BaseAdapter 和 ViewHolder
- Android 自定义全局baseAdapter和ViewHolder
- Android 自定义全局baseAdapter和ViewHolder
- [Android]对BaseAdapter中ViewHolder编写简化
- ubuntu+php环境下的Memcached 安装方法
- Perl——数组、foreach
- Ext JS4序列教程之一 :Layout布局
- Javascript 中的false、0、null、undefined和空字符串对象
- dom4j 把 文本 转成 XML
- Android:BaseAdapter优化之ViewHolder 显示系统已经安装应用并打开
- 秒杀多线程第二篇 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别
- Appium(JAVA)Windows 7系统搭建及示例运行
- CocosStudio UI编辑器(1.6.0)使用调研 (基于cocos2dx-3.2)
- how to logon Oracle DB
- FirstWindow
- 细谈select函数(C语言)
- (12) 初学cocos2dx lua
- Java 中枚举类型的使用