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
原创粉丝点击