Android 非activity下弹出对话框AlertDialog,例如adapter类中

在adapter类中要弹出确认框,是需要设置系统级别的对话框,要给对话框添加属性为

WindowManager.LayoutParams.TYPE_SYSTEM_ALERT

需要在AndroidManifest.xml中添加权限

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

下面是具体代码

AlertDialog alertDialog = new AlertDialog.Builder(this.context).create();
alertDialog.setTitle("标题");
alertDialog.setMessage("具体文本");
 
alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "否", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        System.out.println("否");
    }
});
 
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "是", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        System.out.println("是");
    }
});
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
alertDialog.show();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是使用Android Studio实现带有列表和对话框的笔记的详细步骤和代码。 1. 创建新项目 在Android Studio中,点击“File”->“New”->“New Project”来创建一个新的项目。 2. 添加RecyclerView依赖 在app的build.gradle文件中添加RecyclerView依赖: ```java dependencies { implementation 'com.android.support:recyclerview-v7:28.0.0' } ``` 3. 创建Note类 创建一个名为“Note”的Java类,用于表示笔记对象。该类应该包含一个标题和一个内容。 ```java public class Note { private String title; private String content; public Note(String title, String content) { this.title = title; this.content = content; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } } ``` 4. 创建RecyclerView的布局 在app的res/layout文件夹中创建一个名为“item_note.xml”的布局文件,用于表示单个笔记的布局。该布局应该包含一个标题和一个内容。 ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="16dp"> <TextView android:id="@+id/text_view_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="18sp" android:textStyle="bold" /> <TextView android:id="@+id/text_view_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="16sp" /> </LinearLayout> ``` 5. 创建RecyclerView的适配器 创建一个名为“NoteAdapter”的Java类,用于适配RecyclerView。该类应该继承自RecyclerView.Adapter,并重写onCreateViewHolder、onBindViewHolder和getItemCount方法。 ```java public class NoteAdapter extends RecyclerView.Adapter<NoteAdapter.NoteViewHolder> { private List<Note> notes; public NoteAdapter(List<Note> notes) { this.notes = notes; } @NonNull @Override public NoteViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_note, parent, false); return new NoteViewHolder(itemView); } @Override public void onBindViewHolder(@NonNull NoteViewHolder holder, int position) { Note note = notes.get(position); holder.textViewTitle.setText(note.getTitle()); holder.textViewContent.setText(note.getContent()); } @Override public int getItemCount() { return notes.size(); } class NoteViewHolder extends RecyclerView.ViewHolder { TextView textViewTitle; TextView textViewContent; public NoteViewHolder(@NonNull View itemView) { super(itemView); textViewTitle = itemView.findViewById(R.id.text_view_title); textViewContent = itemView.findViewById(R.id.text_view_content); } } } ``` 6. 创建主活动的布局 在app的res/layout文件夹中创建一个名为“activity_main.xml”的布局文件,用于表示主活动的布局。该布局应该包含一个RecyclerView和一个“添加笔记”按钮。 ```xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view_notes" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/button_add_note" /> <Button android:id="@+id/button_add_note" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:text="Add Note" /> </RelativeLayout> ``` 7. 创建主活动的Java类 创建一个名为“MainActivity”的Java类,用于控制主活动。该类应该包含一个RecyclerView和一个“添加笔记”按钮,并在“添加笔记”按钮上设置一个单击事件侦听器。 ```java public class MainActivity extends AppCompatActivity { private List<Note> notes = new ArrayList<>(); private RecyclerView recyclerView; private NoteAdapter noteAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = findViewById(R.id.recycler_view_notes); noteAdapter = new NoteAdapter(notes); recyclerView.setAdapter(noteAdapter); recyclerView.setLayoutManager(new LinearLayoutManager(this)); Button buttonAddNote = findViewById(R.id.button_add_note); buttonAddNote.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showAddNoteDialog(); } }); } private void showAddNoteDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Add Note"); View view = LayoutInflater.from(this).inflate(R.layout.dialog_add_note, null); final EditText editTextTitle = view.findViewById(R.id.edit_text_title); final EditText editTextContent = view.findViewById(R.id.edit_text_content); builder.setView(view); builder.setPositiveButton("Add", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String title = editTextTitle.getText().toString(); String content = editTextContent.getText().toString(); Note note = new Note(title, content); notes.add(note); noteAdapter.notifyDataSetChanged(); } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); builder.show(); } } ``` 8. 创建添加笔记的对话框的布局 在app的res/layout文件夹中创建一个名为“dialog_add_note.xml”的布局文件,用于表示添加笔记的对话框的布局。该布局应该包含一个标题编辑框和一个内容编辑框。 ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="16dp"> <EditText android:id="@+id/edit_text_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Title" /> <EditText android:id="@+id/edit_text_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Content" /> </LinearLayout> ``` 9. 运行应用程序 点击“Run”按钮,在模拟器或设备上运行应用程序。您应该能够看到一个空列表和一个“添加笔记”按钮。单击“添加笔记”按钮,应该会弹一个对话框,您可以在其中输入笔记的标题和内容。单击“添加”按钮后,笔记应该会添加到列表中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值