2011-11-04 63 views
1

在我的項目中,我需要創建Listview。我創建了text.xml和imageview的row.xml以顯示在列表項中。我在strings.xml文件中提到了這些列表項名稱。但是我怎麼能提到strings.xml文件中的圖像。我怎麼能這樣做。 請幫我解決這個問題。如何在Android中爲每個listitem放置不同的圖像?

+1

添加整數陣列與圖像資源ID .. –

+0

請你可以舉個例子嗎? – Madhuri

回答

2

拍攝圖像與resourceIds數組,並設置ImageView的背景,你都將在textviews價值得到imageIds的陣列圖像。您不需要將圖像或任何東西放入strings.xml。試試這個link

0

在你的適配器中,你可以明確地設置圖像到每個item的ImageView。你可以使用if-else if-else來設置,取決於位置,如果你有幾個項目要顯示每一次。您可以設置一個數組併爲大量項目設置相應的圖像。

0

通過簡單地得到使用下面的代碼..

Resources res = getResources(); 
    TypedArray icons = res.obtainTypedArray(R.array.icons); 
    Drawable drawable = icons.getDrawable(0);//0 is index of your icons array 

<array name="icons"> 
     <item>@drawable/icon1</item> 
     <item>@drawable/icon2</item> 
     <item>@drawable/icon3</item> 

    </array> 

您也可以使用link。在這裏可以看到類型化數組的例子。

請確保圖像lenth和string_array長度應該是平等的,因爲我沒有把故障情況。

public class TestActivity extends Activity implements OnItemClickListener { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 


     ListView list=(ListView) findViewById(R.id.listView1); 
     Resources res = getResources(); 
     TypedArray icons = res.obtainTypedArray(R.array.icons); 


     String[] str=res.getStringArray(R.array.string_array); 

     list.setAdapter(new Adapter(this,icons,str)); 

     list.setOnItemClickListener(this); 

    } 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) 
    { 
     Toast.makeText(TestActivity.this,"You are clicked at:"+pos, Toast.LENGTH_SHORT).show(); 
    } 
    class Adapter extends BaseAdapter 
    { 
     private Context context; 
     private LayoutInflater inflater; 
     TypedArray icons; 
     String[] str; 
     public Adapter(Context mContext, TypedArray icons,String[] str) 
     { 
      this.context= mContext; 
      this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      this.icons=icons; 
      this.str=str; 
     } 

     @Override 
     public int getCount() 
     { 
      return icons.length(); 
     } 

     @Override 
     public Object getItem(int arg0) { 
      // TODO Auto-generated method stub 
      return arg0; 
     } 
     @Override 
     public long getItemId(int arg0) { 
      // TODO Auto-generated method stub 
      return arg0; 
     } 

     @Override 
     public View getView(int pos, View convertView, ViewGroup arg2) { 
      final MainListHolder mHolder; 
      View v = convertView; 
      if (convertView == null) 
      { 
       mHolder = new MainListHolder(); 
       v = inflater.inflate(R.layout.inflate_layout, null); 
       mHolder.mTextview=(TextView) v.findViewById(R.id.textView1); 
       mHolder.imageView=(ImageView) v.findViewById(R.id.imageView1); 
       v.setTag(mHolder); 
      } 
      else 
      { 
       mHolder = (MainListHolder) v.getTag(); 
      } 

      mHolder.mTextview.setText(str[pos]); 
      Drawable drawable = icons.getDrawable(pos);//0 is index of your icons array 
      mHolder.imageView.setImageDrawable(drawable);//Your Drawables array 
      return v; 
     } 
     class MainListHolder 
     { 

      private ImageView imageView; 
      private TextView mTextview; 
     } 
    } 

} 
+0

Resources res = getResources(); TypedArray圖標= res.obtainTypedArray(R.array.app1); Drawable drawable = icons.getDrawable(0);我給這樣在我的java文件,但它沒有檢測到陣列...笏做plz幫助我 – Madhuri

+0

我檢查一下這樣......這對我的作品通過設置簡單的圖像.. ImageView的IM =(ImageView的) findViewById(R.id.imageView1); im.setImageDrawable(drawable); –

+0

嗨對不起,我創造了價值的文件夾images.xml和我已經定義了array..But現在我在arrays.xml定義和它沒有顯示出任何錯誤 – Madhuri

相關問題