2013-07-05 3 views
1

데이터베이스에서 이미지의 이름을 가져 오는 중입니다. 예 : 문자열에 R.drawable.abc Arraylist 다음 코드를 사용하여 목록보기에서 이미지를 설정합니다.이미지 이름을 데이터베이스에서 동적으로 설정하십시오.

int id = getResources().getIdentifier("com.mypackage:drawable/" + arr_img.get(position), 
         null, null); 
imageview.setImageResource(id); 

여기서 arr_img는 모든 이름을 가진 ArrayList 유형입니다. 하지만 이미지를 볼 수 없습니다. 감사합니다. --------

private class MyCustomAdapter extends ArrayAdapter<String> { 

    private ArrayList<String> myAdptr; 

    public MyCustomAdapter(Context context, int textViewResourceId, 

    ArrayList<String> sList) { 
     super(context, textViewResourceId, sList); 
     this.myAdptr = new ArrayList<String>(); 
     this.myAdptr.addAll(stg1); 
    } 

    private class ViewHolder { 
     TextView code; 
     CheckBox name; 
     ImageView imageview; 
    } 

    @Override 
    public View getView(final int position, View convertView, 
      ViewGroup parent) { 

     ViewHolder holder = null; 

     Log.v("ConvertView", String.valueOf(position)); 

     if (convertView == null) { 

      LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      convertView = vi.inflate(R.layout.new_search_adptr, null); 

      holder = new ViewHolder(); 
      holder.code = (TextView) convertView 
        .findViewById(R.id.adapterText1); 
      holder.name = (CheckBox) convertView 
        .findViewById(R.id.checkBox1); 

      holder.imageview = (ImageView) convertView 
        .findViewById(R.id.imageView1); 

      convertView.setTag(holder); 

      holder.name.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 

        CheckBox cb = (CheckBox) v; 

        if (cb.isChecked()) { 

         // User checked (selected) a car 
         // ********************************* 


         if (cntr > 1) { 

          // More than two cars selected 

          Toast.makeText(getApplicationContext(), 
            "Please select only two cars!", 
            Toast.LENGTH_LONG).show(); 

          cb.setChecked(false); 

         } else { 

          // car selected 

          if (cntr == 0) { 
           c1_make = arr_make.get(position); 
           c1_model = arr_model.get(position); 
           c1_ver = arr_ver.get(position); 
          } 

          if (cntr == 1) { 
           c2_make = arr_make.get(position); 
           c2_model = arr_model.get(position); 
           c2_ver = arr_ver.get(position); 
          } 

          cntr++; 

         } 

        } else { 

         // User Unchecked (de - selected) a car 
         // ********************************* 


         cntr--; 

         if (cntr == 0) { 
          c1_make = null; 
          c1_model = null; 
          c1_ver = null; 
         } 

         if (cntr == 1) { 
          c2_make = null; 
          c2_model = null; 
          c2_ver = null; 
         } 

        } 



       } 
      }); 

     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     String state = myAdptr.get(position); 

     holder.code.setText(stg1.get(position).toString()); 


     for (int m = 0; m < arr_img.size(); m++) { 

      System.out.println(m+" --- "+arr_img.get(m)); 
     } 

     int id = getResources() 
       .getIdentifier(
         "com.carlist:drawable/" + arr_img.get(position), 
         null, null); 
     holder.imageview.setImageResource(id); 

     return convertView; 
    } 
} 
+0

을 시도 할 수 있습니다? –

+0

이미지가 드로어 블 폴더에 없습니다. 해당 이름이 arraylist – Carbon

+1

코드를 게시하십시오. –

답변

0

그냥 그것을 변경

----- CODE이 당신을 도움이 될 수 있습니다.

for (int m = 0; m < arr_img.size(); m++) { 

     int id = getResources() 
      .getIdentifier(
        "com.carlist:drawable/" + arr_img.get(m), 
        null, null); 
    holder.imageview.setImageResource(id); 
    } 
0

이미지의 파일 이름을 얻었 으면 다음 코드 섹션 중 하나를 사용하여 이미지를 이미지보기로 설정할 수 있습니다.

String imageName = "picture" 
int resID = getResources().getIdentifier(imageName, "drawable", "package.name"); 
ImageView image; 
imageview.setImageResource(resID); 

또는 당신은 또한 다음 코드는 ArrayList의에 이미지를 저장해야

String imageId = "imageId" 
int resID = getResources().getIdentifier(imageString , "id", "package.name"); 
ImageView image = (ImageView) findViewById(resID);