ListView(1)+intent获得应用

来源:互联网 发布:数据库系统概论王珊ppt 编辑:程序博客网 时间:2024/06/06 10:46
                        ***ListView初步基础***

在底部增加视图addFooterView(view);

最简单的listView点击每个item跳转界面

mListView = (ListView) findViewById(R.id.list_view_demo);ArrayList<ActivityItem> activityItems = new ArrayList<>();activityItems.add(new ActivityItem("1. 应用列表", AppListActivity.class));activityItems.add(new ActivityItem("2. 异步请求数据列表", RequestDataActivity.class));activityItems.add(new ActivityItem("3. 模仿IM聊天布局", ChatActivity.class));mListView.setAdapter(new MainListAdapter(MainActivity.this,activityItems ));

getinfo方法

        Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);        return getPackageManager().queryIntentActivities(mainIntent, 0);

在adapter里面获取当前视图

LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);View headerView = layoutInflater.inflate(R.layout.header_list_demo, null);viewHolder.nameTextView = (TextView) convertView.findViewById(R.id.title_text_view);

在adapter里面重复利用ViewHolder

if(convertView == null){        viewHolder = new ViewHolder();        convertView = layoutInflater.inflate(R.layout.item_demo_list, null);                // 获取控件        viewHolder.nameTextView = (TextView) convertView.findViewById(R.id.title_text_view);        viewHolder.avatarImageView = (ImageView)convertView.findViewById(R.id.icon_image_view);        convertView.setTag(viewHolder);            } else {                viewHolder = (ViewHolder) convertView.getTag();            }

获取应用名称图片

viewHolder.nameTextView.setText(mInfos.get(position).activityInfo.loadLabel(mContext.getPackageManager()));            viewHolder.avatarImageView.setImageDrawable(mInfos.get(position).activityInfo.loadIcon(mContext.getPackageManager()));

在getView里面设置每个item的点击事件

convertView.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    ResolveInfo info = mInfos.get(position);                    //该应用的包名                    String pkg = info.activityInfo.packageName;                    //应用的主activity类                    String cls = info.activityInfo.name;                    ComponentName componet = new ComponentName(pkg, cls);                    Intent intent = new Intent();                    intent.setComponent(componet);                    startActivity(intent);                }            });

全部代码

public class AppListActivity extends AppCompatActivity{    private ListView mListView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mListView = (ListView) findViewById(R.id.list_view_demo);        LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);        View headerView = layoutInflater.inflate(R.layout.header_list_demo, null);        mListView.addHeaderView(headerView);        List<ResolveInfo> infos = getAppInfos();        mListView.setAdapter(new AppListAdapter(this, infos));    }    private List<ResolveInfo> getAppInfos() {        Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);        return getPackageManager().queryIntentActivities(mainIntent, 0);    }    public class AppListAdapter extends BaseAdapter{        private Context mContext;        private List<ResolveInfo> mInfos;        public AppListAdapter(Context context, List<ResolveInfo> infos) {            mContext = context;            mInfos = infos;        }        @Override        public int getCount() {            return mInfos.size();        }        @Override        public Object getItem(int position) {            return mInfos.get(position);        }        @Override        public long getItemId(int position) {            return position;        }        @Override        public View getView(final int position, View convertView, ViewGroup parent) {            ViewHolder viewHolder;            LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);            if(convertView == null){                viewHolder = new ViewHolder();                convertView = layoutInflater.inflate(R.layout.item_demo_list, null);                // 获取控件                viewHolder.nameTextView = (TextView) convertView.findViewById(R.id.title_text_view);                viewHolder.avatarImageView = (ImageView) convertView.findViewById(R.id.icon_image_view);                convertView.setTag(viewHolder);            } else {                viewHolder = (ViewHolder) convertView.getTag();            }            // 和数据之间进行绑定            viewHolder.nameTextView.setText(mInfos.get(position).activityInfo.loadLabel(mContext.getPackageManager()));            viewHolder.avatarImageView.setImageDrawable(mInfos.get(position).activityInfo.loadIcon(mContext.getPackageManager()));            convertView.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    ResolveInfo info = mInfos.get(position);                    //该应用的包名                    String pkg = info.activityInfo.packageName;                    //应用的主activity类                    String cls = info.activityInfo.name;                    ComponentName componet = new ComponentName(pkg, cls);                    Intent intent = new Intent();                    intent.setComponent(componet);                    startActivity(intent);                }            });            return convertView;        }        class ViewHolder {            ImageView avatarImageView;            TextView nameTextView;        }    }