- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要使用类似 setMultiChoiceItems 样式的对话框但包含更多信息,所以我使用自定义布局。
我的布局包含一个图像字段、另一个标题字段、另一个描述字段和另一个来自复选框的字段。
我已经设法让它像这样工作了:
我知道我需要使用 setAdapter 而不是 setMultiChoiceItems。到目前为止一切顺利。
我的问题是如何打开已经选择了一些选项的对话框?稍后接收所有选定的项目以发送到服务器?
使用 setMultiChoiceItems 我可以让它像这样工作:
但我似乎无法使用自定义布局。
这是我的代码:
##### ArrayList - ALItensValues #####
public class ALItensValues {
private int icon;
private String value;
private String titulo;
private String descricao;
public ALItensValues(int icon, String value, String titulo, String descricao) {
this.icon = icon;
this.value = value;
this.titulo = titulo;
this.descricao = descricao;
}
int getIcon() { return icon; }
String getValue() { return value; }
String getTitulo() { return titulo; }
String getDescricao() { return descricao; }
}
##### 适配器 - ALItensValuesAdapter #####
private class ALItensValuesAdapter extends BaseAdapter {
private ArrayList<ALItensValues> mData;
private Context mContext;
ALItensValuesAdapter(ArrayList<ALItensValues> aldata, Context context) {
this.mData = aldata;
this.mContext = context;
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater mInflater = (LayoutInflater) mContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = Objects.requireNonNull(mInflater).inflate(R.layout.multipleselectcustom_lines, null);
}
ImageView icon = convertView.findViewById(R.id.imgvicon);
icon.setImageResource(mData.get(position).getIcon());
TextView titulo = convertView.findViewById(R.id.txtv_titulo);
titulo.setText(mData.get(position).getTitulo());
TextView decricao = convertView.findViewById(R.id.txtv_desc);
decricao.setText(mData.get(position).getDescricao());
CheckBox checkbox = convertView.findViewById(R.id.chkbox);
convertView.setOnClickListener(v -> {
checkbox.toggle();
});
return convertView;
}
}
#### Layout Itens - R.layout.multipleselectcustom_lines ####
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content" android:gravity="center">
<ImageView
android:id="@+id/imgvicon"
tools:srcCompat="@tools:sample/avatars"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_marginTop="8dp"
android:layout_marginLeft="8dp"
android:layout_marginStart="8dp"
android:layout_marginBottom="8dp"
android:adjustViewBounds="true"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_weight="1">
<TextView
android:text="Titulo"
android:layout_width="match_parent"
android:layout_height="wrap_content" android:id="@+id/txtv_titulo"
android:layout_marginLeft="8dp"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp" android:textSize="18sp"/>
<TextView
android:text="Descrição"
android:layout_width="match_parent"
android:layout_height="wrap_content" android:id="@+id/txtv_desc"
android:layout_marginLeft="8dp" android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp" android:visibility="visible" android:layout_marginTop="3dp"/>
</LinearLayout>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/chkbox"
android:layout_marginEnd="8dp" android:layout_marginRight="8dp"
android:layout_marginTop="8dp" android:layout_marginBottom="8dp"
/>
</LinearLayout>
#### Activity 类####
public class FormsMultipleSelectCustomJava extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_multipleselectcustom);
// I get the items that should be selected separated by commas.
// And I do the following to transform into array,
// but I do not know how to use it in dialog.:
String selectItensServer = "0b2,0e5,0f6,0h8";
String[] selectInitItens = selectItensServer.split(",");
// List of items that should appear in the dialog.
ArrayList<ALItensValues> AlertDialogitemList = new ArrayList<>();
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_bicycle, "0a1", "Test 1", "Lorem ipsum dolor sit amet"));
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_btc, "0b2", "Test 2", "Duis at ullamcorper quam"));
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_car, "0c3", "Test 3", "Aenean aliquam sit amet nibh eget bibendum"));
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_credit_card, "0d4", "Test 4", "Sed a est vel velit rutrum porta"));
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_gamepad, "0e5", "Test 5", "Phasellus pellentesque arcu et fermentum tempus"));
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_gift, "0f6", "Test 6", "Integer arcu leo, consequat eget tempus sed"));
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_paypal, "0g7", "Test 7", "Pellentesque habitant morbi tristique senectus"));
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_taxi, "0h8", "Test 8", "Proin iaculis, velit ac consectetur bibendum, orci nisi scelerisque"));
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_utensils, "0i9", "Test 9", "Ut ullamcorper nisi dui, et sagittis ante mollis vitae"));
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_whatsapp, "k10", "Test 10", "Donec rhoncus magna in mauris ultricies"));
// Button that opens the dialog.
Button btnopendialog = findViewById(R.id.btnopendialog);
btnopendialog.setOnClickListener(v -> {
AlertDialog.Builder dialogbuider = new AlertDialog.Builder(context);
dialogbuider.setCancelable(false);
dialogbuider.setTitle("Itens");
ALItensValuesAdapter mAdapter = new ALItensValuesAdapter(ALitensvalues, context);
dialogbuider.setAdapter(mAdapter, (dialog, which) -> {
// I do not know what to do here.
// But I think it should be here that I start the selected items.
});
dialogbuider.setPositiveButton("OK", (dialogInterface, which) -> {
// And once selected, I would like to display in textview the items that are currently selected.
});
dialogbuider.setNeutralButton("Clear", (dialogInterface, which) -> {
// Here should clear all checkboxes
});
AlertDialog dialog = dialogbuider.create();
ListView listView = dialog.getListView();
listView.setDivider(new ColorDrawable(Color.GRAY));
listView.setDividerHeight(2);
dialog.show();
});
//Button to send to server.
findViewById(R.id.btnsend).setOnClickListener(v -> {
//I need to know how to retrieve the selected items.
});
}
最佳答案
正如 Le Thanh Tan 所提到的,接口(interface)是必经之路。
创建MyInterface.java文件并添加这段代码
public interface MyInterface {
void onItemChecked(int position);
}
如下更新您的 ALItensValues 类
public class ALItensValues {
private int icon;
private String value;
private String titulo;
private String descricao;
private Boolean isChecked;
public ALItensValues(int icon, String value, String titulo, String descricao, Boolean isChecked) {
this.icon = icon;
this.value = value;
this.titulo = titulo;
this.descricao = descricao;
this.isChecked = isChecked;
}
int getIcon() { return icon; }
String getValue() { return value; }
String getTitulo() { return titulo; }
String getDescricao() { return descricao; }
Boolean getChecked() { return isChecked; }
void setChecked(Boolean isChecked) {
this.isChecked = isChecked;
}
}
现在您的 Activity 将是
public class FormsMultipleSelectCustomJava extends AppCompatActivity {
String selectItensServer;
String[] selectInitItens;
ArrayList<ALItensValues> AlertDialogitemList = new ArrayList<>();
ArrayList<ALItensValues> selectedItemsList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_multipleselectcustom);
selectItensServer = "0b2,0e5,0f6,0h8";
selectInitItens = selectItensServer.split(",");
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_bicycle, "0a1", "Test 1", "Lorem ipsum dolor sit amet", true));
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_btc, "0b2", "Test 2", "Duis at ullamcorper quam", true));
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_car, "0c3", "Test 3", "Aenean aliquam sit amet nibh eget bibendum", false));
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_credit_card, "0d4", "Test 4", "Sed a est vel velit rutrum porta", true));
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_gamepad, "0e5", "Test 5", "Phasellus pellentesque arcu et fermentum tempus", false));
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_gift, "0f6", "Test 6", "Integer arcu leo, consequat eget tempus sed", true));
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_paypal, "0g7", "Test 7", "Pellentesque habitant morbi tristique senectus", false));
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_taxi, "0h8", "Test 8", "Proin iaculis, velit ac consectetur bibendum, orci nisi scelerisque", true));
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_utensils, "0i9", "Test 9", "Ut ullamcorper nisi dui, et sagittis ante mollis vitae", false));
AlertDialogitemList.add(new ALItensValues(R.drawable.atrib_whatsapp, "k10", "Test 10", "Donec rhoncus magna in mauris ultricies", true));
Button btnopendialog = findViewById(R.id.btnopendialog);
btnopendialog.setOnClickListener(v -> {
AlertDialog.Builder dialogbuider = new AlertDialog.Builder(context);
dialogbuider.setCancelable(false);
dialogbuider.setTitle("Itens");
ALItensValuesAdapter mAdapter = new ALItensValuesAdapter(ALitensvalues, context, new MyInterface() {
@Override
public void onItemChecked(int position)
{
AlertDialogitemList.get(position).setChecked(!AlertDialogitemList.get(position).getChecked())
}
});
dialogbuider.setAdapter(mAdapter, (dialog, which) -> {
});
dialogbuider.setPositiveButton("OK", (dialogInterface, which) -> {
});
dialogbuider.setNeutralButton("Clear", (dialogInterface, which) -> {
});
AlertDialog dialog = dialogbuider.create();
ListView listView = dialog.getListView();
listView.setDivider(new ColorDrawable(Color.GRAY));
listView.setDividerHeight(2);
dialog.show();
});
findViewById(R.id.btnsend).setOnClickListener(v -> {
for(ALItensValues item : AlertDialogitemList) {
if(item.isChecked()) {
selectedItemsList.add(item);
}
}
// selected items can be sent to server
});
}
}
你的适配器
private class ALItensValuesAdapter extends BaseAdapter {
private ArrayList<ALItensValues> mData;
private Context mContext;
private MyInterface interface;
ALItensValuesAdapter(ArrayList<ALItensValues> aldata, Context context, MyInterface interface) {
this.mData = aldata;
this.mContext = context;
this.interface = interface;
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater mInflater = (LayoutInflater) mContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = Objects.requireNonNull(mInflater).inflate(R.layout.multipleselectcustom_lines, null);
}
ImageView icon = convertView.findViewById(R.id.imgvicon);
icon.setImageResource(mData.get(position).getIcon());
TextView titulo = convertView.findViewById(R.id.txtv_titulo);
titulo.setText(mData.get(position).getTitulo());
TextView decricao = convertView.findViewById(R.id.txtv_desc);
decricao.setText(mData.get(position).getDescricao());
CheckBox checkbox = convertView.findViewById(R.id.chkbox);
if(mData.get(position).getChecked()) {
checkbox.setChecked(true);
} else {
checkbox.setChecked(false);
}
convertView.setOnClickListener(v -> {
this.interface.onItemChecked(position);
checkbox.toggle();
});
return convertView;
}
}
希望这能奏效。
关于java - 如何使用 setMultiChoiceItems 等复选框列表创建自定义对话框,接收和发送数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56160093/
我有一个删除按钮,单击该按钮时我希望弹出一个对话框,然后单击“确定”它应该执行 Ajax 调用,否则不应该执行任何操作。这是代码 $('.comment-delete').click(function
public void exitGame() { //pop up dialogue Platform.exit(); } 我已经尝试了很多我在互联网上看到的不同的东西,但我什么都做不了。我所
我有一个典型的素面对话框,效果很好,但是当有人在对话框外单击时,我找不到任何关闭它的选项。我看到了一些jquery示例,我想我可以将其改编为primefaces对话框,但首先要确保还没有解决方案? 谢
我试图让 jquery 对话框在单击按钮时启动,但似乎不起作用。任何帮助将不胜感激: $('#wrapper').dialog({ autoOpen: false,
我试图单独更改标题栏颜色。所以我使用了 .ui-dialog-titlebar ,但它不起作用,所以我尝试使用 ui-widght-header ,它也反射(reflect)到数据表..请告知。 //
我的页面上有 div(box),我正在使用此脚本将 div 显示为对话框。在该 div 内,我有一个超链接,单击该超链接时,我想淡出对话框并关闭。对话框的内容淡出,但对话框的边框保持不变。如果我将 $
我当前有一个对话框,其内容有两个输入(这两个输入使用 .datepicker())。当我打开对话框时,第一个输入成为焦点,并且第一个日期选择器自动出现。我尝试隐藏 div 并模糊输入,但这会导致日期选
我想即时创建一个 jQuery 对话框。我正在使用这个: var newDiv = $(document.createElement('div')); $(newDiv).html('hello th
child: RaisedButton( color: const Color(0xFF5867DD), onPressed: (){ updateProfilePic();
我有下面的 jquery 代码,我已根据我的要求对其进行了自定义,但存在一些问题。首先,用户单击“单击此处”,不会显示对话框。当用户单击“关闭”时,对话框不会消失。非常感谢您提供的所有帮助。
如何创建一个对话框,该对话框的顶部有一个文本,其下方有一个空白区域,用户可以在其中键入内容,在右侧下方有一个 OKAY 按钮,当您单击该按钮时,对话框消失? 像这样: 最佳答案 String inpu
这是一个简单得多的问题。 private static AplotBaseDialog dlg; public Object execute(final ExecutionEvent event) t
我正在为我的应用程序开发小部件。应该有一些小部件可以实现相同的功能,唯一的区别在于它们的布局(主题/外观) 我会创建一个对话框或屏幕,用户可以在其中选择他喜欢的小部件。当我选择它们时,我在很多小部件中
我有 jQuery 对话框窗口,在某些操作中我有一个加载的 blockUI 插件。 我面临的问题是,即使 AJAX 图像仍在显示,我仍然能够在执行 ajax 操作时执行操作。 另一方面,JSP 页面在
我非常熟悉将 jQuery 对话框 div 设置为可见后将其附加到表单元素的技巧。我已经在 .NET 中这样做了一百次左右,而且效果很好!然而,我正在尝试在 Coldfusion 网站上执行此操作,这
我想使用jquery对话框来收集用户信息(例如用户名)。我如何使用 Jquery 做到这一点并将数据收集到 Javascript 变量中? 这是我迄今为止的尝试: // Dialog here, ho
如何设置 jquery 对话框按钮的工具提示?请参阅下面的内容...这里没有 id 或样式类。 jQuery("#dialog-form").dialog ({ autoOpen: false,
我有调用对话框的 JS 函数 function SomeFunction { $('#editformdialog').dialog('open'); } 这显然已经简化了。但是,我得到 a is u
我正在使用 jquery 模式对话框来显示部分 View 中的数据表。在部分 View 中,我有一些脚本,用于将 HTML 表更改为 jquery DataTables。因此,我需要确保表格在对话框中
我正在尝试添加透明的 JQuery 对话框。但我遇到了两个问题: 文本“Hello”的背景不会变得透明 删除标题栏后,我无法再拖动对话框 这些评论是我迄今为止尝试过的。 //Create ne
我是一名优秀的程序员,十分优秀!