我想使用AlertDialog爲列表中的每個項目顯示不同文本樣式的多行,但不能罰款任何示例。如何自定義Android AlertDialog中的列表項目
有誰知道如何自定義AlertDialog的項目?或者我真的必須爲此創建一個帶ListView的Activity?
我想使用AlertDialog爲列表中的每個項目顯示不同文本樣式的多行,但不能罰款任何示例。如何自定義Android AlertDialog中的列表項目
有誰知道如何自定義AlertDialog的項目?或者我真的必須爲此創建一個帶ListView的Activity?
在AlertDialog.Builder
上使用setAdapter()
來爲您的清單提供您自己的定製ListAdapter
。
參見THIS LINK以實現上述想法。
編輯:順便說一下,我做了一些改動,以實際顯示不同的圖標:
list_item.xml
:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/icon"
android:contentDescription="@string/icon_descr"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="left" />
<TextView
android:id="@+id/title"
android:text=""
android:paddingLeft="10dip"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
和你的活動:
// dialog list entries
final String[] items = {
getString(R.string.entry_0),
getString(R.string.entry_1),
getString(R.string.entry_2)
};
// dialog list icons: some examples here
final int[] icons = {
android.R.drawable.ic_menu_edit,
android.R.drawable.ic_menu_send,
android.R.drawable.ic_menu_delete
};
ListAdapter adapter = new ArrayAdapter<String>(
getApplicationContext(), R.layout.list_item, items) {
ViewHolder holder;
class ViewHolder {
ImageView icon;
TextView title;
}
public View getView(int position, View convertView, ViewGroup parent) {
final LayoutInflater inflater = (LayoutInflater) getApplicationContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = inflater.inflate(
R.layout.list_item, null);
holder = new ViewHolder();
holder.icon = (ImageView) convertView
.findViewById(R.id.icon);
holder.title = (TextView) convertView
.findViewById(R.id.title);
convertView.setTag(holder);
} else {
// view already defined, retrieve view holder
holder = (ViewHolder) convertView.getTag();
}
holder.title.setText(items[position]);
holder.icon.setImageResource(icons[position]);
return convertView;
}
};
// ----------
AlertDialog.Builder builder = new AlertDialog.Builder(myActivity.this);
builder.setTitle("title");
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// ---
}
});
builder.create();
if (! ((Activity) myActivity.this).isFinishing()) {
builder.show();
}
這給了我錯誤'IllegalStateException:系統服務在onCreate之前不可用於活動「 – mrid 2017-10-06 12:55:28