2013-01-24 76 views
1

我想創建和對話框,它出現和一個人可以選擇八個選項之一。 所以我發現,最好的是'Alert Dialog'類。我知道,如何用這個類創建一個對象,該對象顯示可供選擇的文本選項列表。但是我決定了,到現在爲止顯示的文字選項,但圖像,所以我創造了這樣的事情:AlertDialog與圖像

AlertDialog.Builder builder = new AlertDialog.Builder(StartGameActivity.this);

builder.setTitle(R.string.pickColor); 

      builder.setItems(R.array.colorArray, new DialogInterface.OnClickListener() { 

       public void onClick(DialogInterface dialog, int which) { 
         it's not important what is inside this function 
        } 

}

但是當我運行我的應用程序,並出現警告對話框 - 我只能看到文字,我認爲這是我的圖像所在的文件夾的路徑(它類似於:res/drawable-xhpi/image_name.jpeg)

我正在尋找這個問題的解決方案,但是,我發現這是無用的。 我已閱讀,也許我應該使用ListAdapter或LayoutInflater,但我不知道如何使用它。任何人都可以解釋我如何在AletDialog中製作圖像列表?

+1

您可以使用AlertDialog.Builder.setView(查看)函數來設置自己的視圖對話框。您可以膨脹您選擇的佈局並將其設置爲對話框。 – Enigma

回答

1

假設你的數組資源ID列表...

AlertDialog.Builder builder = new AlertDialog.Builder(StartGameActivity.this); 
builder.setTitle(R.string.pickColor); 
ListView lv = new ListView(getActivity()); 
lv.setAdapter(new ArrayAdapter<String>(getActivity(), -1) { 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     Resources res = getResources(); 
     TypedArray colorArray = res.obtainTypedArray(R.array.colorArray); 
     Drawable drawable = colorArray.getDrawable(position); 
     ImageView v = new ImageView(getActivity()); 
     v.setImageDrawable(drawable); 
     return v; 
    } 

    @Override 
    public int getCount() { 
     Resources res = getResources(); 
     TypedArray colorArray = res.obtainTypedArray(R.array.colorArray); 
     return colorArray.length(); 
    } 
}); 
lv.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
     // do click stuff 
    } 

}); 
builder.setView(lv);