当前位置:编程学习 > wap >>

求教,通过PackageManager.getApplicationIcon(PackageName pn)获得程序图标,怎么不能在ImageView里显示?

PackageManager.getApplicationIcon(PackageName pn)获得Drawable对象的程序图标Drawable appicon

ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();

HashMap<String, Object> map = new HashMap<String, Object>();
map.put("itemimageview",appicon );
map.put("itemtextview", (i++)+appname);
listItem.add(map);

SimpleAdapter listItemAdapter = new SimpleAdapter
(this,
 listItem,//数据源    
          R.layout.listview, 
          new String[] {"itemimageview", "itemtextview"}, 
          new int[] {R.id.itemimageview,R.id.itemtextview}
);

myListView1.setAdapter(listItemAdapter);

但是图标显示不了,难道是appicon是Drawable对象的原因?map.put("itemimageview",appicon )里的appicon换成一图片可以显示,应该获得图标的方法是对的啊,程序名通过PackageName的方法都正确显示了。

怎样才能将获得的Drawable对象的图标显示在ImageView里面呢?
--------------------编程问答-------------------- 但是图标显示不了,难道是appicon是Drawable对象的原因?map.put("itemimageview",appicon )里的appicon换成一图片可以显示,应该获得图标的方法是对的啊,程序名通过PackageName的方法都正确显示了。

你说的对,因为
new int[] {R.id.itemimageview,R.id.itemtextview}
);
adapter中ImageView传递的是一个id,所以如果直接用drawble对象就显示不出来。
--------------------编程问答-------------------- 感谢1楼朋友,知道错在哪了
还有,我现在要修改ListView的第n行里的TextView对象,怎么取得对象呢? --------------------编程问答-------------------- 还有,能不能给获得的appicon赋予一个id呢? --------------------编程问答-------------------- 额,也似乎不对,那为什么map.put("itemtextview", (i++)+appname);
(i++)+appname能显示呢?而appicon却不能显示呢? --------------------编程问答-------------------- 我也不知道怎么把drawable转成id,看了一遍api,没找到
期待高人~~~· --------------------编程问答-------------------- 我现在要修改ListView的第n行里的TextView对象,怎么取得对象并修改呢? --------------------编程问答--------------------
				TextView tvTitle;
TextView tvTextt;
// 将所有的列表项的文本颜色清空
int visStart = listMusic.getFirstVisiblePosition(); // listview显示可见区域的第一个item位置
int visEnd = listMusic.getLastVisiblePosition();// listview可见区域的组后一个item位置
for (int i = 0; i <= visEnd - visStart; i++) {
tvTitle = (TextView)(listMusic.getChildAt(i).findViewById(R.id.ItemTitle));
tvTitle.setTextColor(0xFFFF69B4);
tvTextt = (TextView)(listMusic.getChildAt(i).findViewById(R.id.ItemText));
tvTextt.setTextColor(0xFFFF1493);
}
// 设置正在播放的项的字体颜色
int index = MusicService.mPlayPosition - visStart;
if ( index >= 0 && index <= visEnd - visStart) {
tvTitle = (TextView)(listMusic.getChildAt(index).findViewById(R.id.ItemTitle));
tvTitle.setTextColor(Color.GREEN);
tvTextt = (TextView)(listMusic.getChildAt(index).findViewById(R.id.ItemText));
tvTextt.setTextColor(Color.CYAN);
// Log.d(TAG, "OnItemSelectedListener Set playing item color index = " + index);
}

那你应该知道n具体是哪个吧?
还有你是要在什么时候修改?
是在被点击的时候setOnItemClickListener,
被选中的时候setOnItemSelectedListener,
还是滑动的时候setOnScrollListener?
实现响应的listener就可以了 --------------------编程问答-------------------- 获取ListView的第n行里的TextView对象解决了,就是要在监听器里获取
myListView1.setOnItemClickListener(new ListView.OnItemClickListener()
       {
               
@Override
     public void onItemClick(AdapterView<?> arg0, View arg1, final int id,
     long arg3) 
        {
RelativeLayout lr=(RelativeLayout)arg1;
final TextView mText=(TextView)lr.getChildAt(3);
感谢热心帮助的雨夢
显示程序图片还是没解决 --------------------编程问答-------------------- ImageView iv = (ImageView) myListView1.getChildAt(i).findViewById
                                                     (R.id.itemimageview1);
iv.setImageDrawable(appicon);
应该是这样吧,不过现在FC了 --------------------编程问答-------------------- 请问您最后是怎么将drawable对象转换为id的呢?
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,