0

목록에 리소스 ID를 추가했습니다. 그리고 그 resourceid를 사용하여 ImageView에서 이미지를로드했습니다. 그러나 그것은 검은 색으로 보입니다. 나는 이렇게했다. 미리 감사드립니다.데이터베이스에 저장된 리소스 ID를 사용하여 이미지 뷰에 이미지를로드하는 방법

private void initArcMenu(ArcMenu menu, int[] itemDrawables, final ArrayList<AppInfo> appinfo) { 
     final int itemCount = appinfo.size(); 

     for (int i = 0; i < itemCount; i++) { 

      long drawable = appinfo.get(i).getIconResourceId(); 
      appinfo.get(0).getIconResourceId(); 
      ImageView item = new ImageView(this); 
      // item.setImageResource((int) drawable); 
      item.setImageBitmap(BitmapFactory.decodeResource(getResources(),(int)appinfo.get(i).getIconResourceId())); 
      Log.e("Simple drawable",(int) drawable+""); 
      final int position = i; 
      menu.addItem(item, new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 


        Toast.makeText(RingActivity.this, "position:" + appinfo.get(position).getAppName(), Toast.LENGTH_SHORT).show(); 
       } 
      }); 
     } 
    } 

답변

0

자신의 앱의 리소스에있는 ID로

item.setImageBitmap(BitmapFactory.decodeResource(getResources(),(int)appinfo.get(i).getIconResourceId())); 

구체적 getResources 호 :

범인이 라인이다. 이렇게하면 자신의 앱 리소스를 사용하여 찾은 아이콘을로드하려고 시도합니다. 대신 처리중인 정보의 앱 리소스를 사용해야합니다. 나머지 줄을 단순화하고 setResourceDrawable을 대신 사용할 수도 있습니다.

나는 AppInfo이 일부 응용 프로그램에 대한 정보가 포함 된 자신의 클래스라고 가정합니다. 해당 앱의 패키지 이름을 포함해야합니다. 그런 다음 코드는 다음과 같은 것을 볼 수 있었다 :

String pkg = appinfo.get(i).getPackageName(); 
Resources res = getPackageManager().getResourcesForApplication(pkg); 
item.setIconDrawable(res.getDrawable((int)appinfo.get(i).getResourceIcon()); 

당신이 (가 아닌 활동 또는 유사한에서 즉) Context의 하위에없는 경우에, 당신은 Context의 인스턴스에 getPackageManager()를 호출해야합니다.

+0

나는 동일한 코드를 사용했습니다. 그리고 그것은 효과적이었습니다. 어쨌든 고맙습니다. – user3643493

1

사용 item.setImageResource((int)appinfo.get(i).getIconResourceId());

0

당신은 사용할 수 있습니다 나는 당신의 문제가 다른 응용 프로그램에 대한 리소스 ID 년대를 얻을 때문이다, 그러나 당신이 해당 자원을로드 할 생각이

item.setImageDrawable(RingActivity.this.getResources().getDrawable((int)appinfo.get(i).getIconResourceId()));