安卓权威指南(第三版)24章挑战练习

    (题目)前面,为在启动器应用中显示各个activity的名称,你使用了 ResolveInfo.loadLabel(...)
方法。 loadIcon() 是 ResolveInfo 类的另一个方法,可以用它为每个应用加载显示图标。作为

练习,请给NerdLauncher应用中显示的所有应用添加图标。



emmm...上面就是题目啦!我们不在叙述之前的操作,按着书来一步一步应该是没有问题,就直接进入主题。

先放图

安卓权威指南(第三版)24章挑战练习_第1张图片

看到这个,我首先想到这是动态图片加载(程序运行了才可以得到图片)啊,,我们应该更改layout,增加一个ImageView视图用来显示图片。但是之前书上没有新建视图啊,于是就去真正管理试图的ActivityAdapter类中去寻找绑定视图的地方。


在onCreateViewHolder方法中找到了以下这行

View view = layoutInflater

.inflate(android.R.layout.simple_list_item_1, parent, false);


原来是androidstudio自带的视图

ctrl+点击simple_list_item_1,跳转过去,ctrl+a   ctrl+c   ctrl+v 行云流水的操作,在layout下创建了一个layout视图。

改了个名字。(添加了ImageView后,笔者就没了思路,只好转变思路)


直接为TextView增加一个图片不就得了!很轻松啊这样

于是去ActivityHolder类中添加了如下语句:

private class ActivityHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
    private ResolveInfo mResolveInfo;
    private TextView mNameTextView;
    public ActivityHolder(View itemView) {
        super(itemView);
        mNameTextView = (TextView) itemView;
        mNameTextView.setOnClickListener(this);
    }
    public void bindActivity(ResolveInfo resolveInfo) {
        mResolveInfo = resolveInfo;
        PackageManager pm = getActivity().getPackageManager();
        String appName = mResolveInfo.loadLabel(pm).toString();
     //获取图片
    Drawable appIcon = mResolveInfo.loadIcon(pm);
        mNameTextView.setText(appName);
    //为TextView设置图片
     mNameTextView.setCompoundDrawablesRelativeWithIntrinsicBounds(null,null,appIcon,null);

    }

mNameTextView.setCompoundDrawablesRelativeWithIntrinsicBounds(null,null,appIcon,null);

此方法四个参数都是drawable类型分别为TextView 的开始、上、结束、下 四个位置放置图片!


第一个方法还未完善,待完善之后再修改博客。不喜勿喷,喷了我也不理你~~嘻嘻。

你可能感兴趣的:(移动开发)