我正在构建一个Android应用程序,当用户点击我的RecyclerView的其中一个项目时,会弹出一个AlertDialog,允许他们编辑该列表中的项目。
但是,我想在AlertDialog上显示有关他们正在编辑的项目的一些信息,但是无法找到填充我添加到对话框的自定义布局中内容的方法。
创建AlertDialog的onClickListener
holder.ivLinearLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(mContext instanceof MainActivity) {
MainActivity mainActivity = (MainActivity) mContext;
AlertDialog.Builder builder = new AlertDialog.Builder(mainActivity);
builder.setTitle(mContext.getString(R.string.alert_food_detail_title));
builder.setView(mainActivity.getLayoutInflater().inflate(R.layout.alert_detail_food, null))
.setPositiveButton(mContext.getString(R.string.alert_food_detail_ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
})
.setNeutralButton(mContext.getString(R.string.alert_food_detail_cancel), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
})
.setNegativeButton(mContext.getString(R.string.alert_food_detail_exclude), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
自定义布局的XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/textview_alert_food_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
android:textColor="@color/gray"
android:textSize="16sp" />
<EditText
android:id="@+id/edittext_alert_food_quantity"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:inputType="numberDecimal"
android:textColor="@color/gray"
android:textSize="16sp" />
<TextView
android:id="@+id/textview_alert_food_kcal"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@color/gray"
android:textSize="16sp" />
<TextView
android:id="@+id/textview_alert_food_carb"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@color/gray"
android:textSize="16sp" />
<TextView
android:id="@+id/textview_alert_food_prot"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@color/gray"
android:textSize="16sp" />
<TextView
android:id="@+id/textview_alert_food_fat"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@color/gray"
android:textSize="16sp" />
</LinearLayout>
如果需要更多代码,请与我联系。
这就是我的AlertDialog现在的样子,自定义视图正确应用但是有5个TextView我想填充自定义数据和一个EditText,任何关于如何做的想法?
答案 0 :(得分:0)
您应该为它创建自定义对话框类。您为Dialog创建了自己的布局,将其用于您自己的对话框类。
public class CustomDialog extends Dialog implements View.OnClickListener{
private TextView foodName,foodQuantity,foodKcal,foodCarb,foodProt,foodFat;
public CustomDialog(Context context) {
super(context);
setContentView(R.layout.dialog_layout);
foodName = (TextView)findViewById(R.id.textview_alert_food_name);
foodQuantity = (TextView)findViewById(R.id.textview_alert_food_name);
foodKcal = (TextView)findViewById(R.id.textview_alert_food_kcal);
foodCarb = (TextView)findViewById(R.id.textview_alert_food_carb);
foodProt = (TextView)findViewById(R.id.textview_alert_food_prot);
foodFat = (TextView)findViewById(R.id.textview_alert_food_fat);
foodName.setOnClickListener(this);
foodQuantity.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if(view == foodName){
}else if(view == foodQuantity){
// access them like this
}
}
}
此课程将解决您的解决方案。如果需要,可以将View.OnClickListener作为参数发送,并在活动中声明您的主体。或者像这样使用它。