PackageManager.getApplicationIcon(PackageName pn)获得Drawable对象的程序图标Drawable appiconArrayList<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里面呢?

解决方案 »

  1.   

    但是图标显示不了,难道是appicon是Drawable对象的原因?map.put("itemimageview",appicon )里的appicon换成一图片可以显示,应该获得图标的方法是对的啊,程序名通过PackageName的方法都正确显示了。你说的对,因为
    new int[] {R.id.itemimageview,R.id.itemtextview}
    );
    adapter中ImageView传递的是一个id,所以如果直接用drawble对象就显示不出来。
      

  2.   

    感谢1楼朋友,知道错在哪了
    还有,我现在要修改ListView的第n行里的TextView对象,怎么取得对象呢?
      

  3.   

    还有,能不能给获得的appicon赋予一个id呢?
      

  4.   

    额,也似乎不对,那为什么map.put("itemtextview", (i++)+appname);
    (i++)+appname能显示呢?而appicon却不能显示呢?
      

  5.   

    我也不知道怎么把drawable转成id,看了一遍api,没找到
    期待高人~~~·
      

  6.   

    我现在要修改ListView的第n行里的TextView对象,怎么取得对象并修改呢?
      

  7.   

    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就可以了
      

  8.   

    获取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);
    感谢热心帮助的雨夢
    显示程序图片还是没解决
      

  9.   

    ImageView iv = (ImageView) myListView1.getChildAt(i).findViewById
                                                         (R.id.itemimageview1);
    iv.setImageDrawable(appicon);
    应该是这样吧,不过现在FC了
      

  10.   

    请问您最后是怎么将drawable对象转换为id的呢?