Здравствуйте, я все равно следовал всем учебникам в Stack Overflow и YouTube, как только я отобразил свой RecyclerView, тогда мне нужно было выполнить sh другие задачи без каких-либо проблем. В любом случае, моя единственная проблема в том, что исчезли положительная и отрицательная кнопки. Я предполагаю, что проблема может заключаться в том, что вещи, которые я сделал в моем XML, перекрываются с кнопками в представлении, но у меня есть только 3 элемента в RecyclerView, так что это мое большое сомнение. Я сделал диалог в onLongClick, затем добавил метод RecyclerView, чтобы получить позицию и данные, присутствующие в строке, поэтому я не могу вызвать alertDialog.setPositiveButton () в другом месте. Это довольно сложная задача, и мы будем признательны за помощь в этом.
Это мой XML
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/text_adm_asigna_asesor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:fontFamily="@font/poppins_bold"
android:text="Asigna un asesor"
android:textColor="@android:color/black"
android:textSize="18sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="30dp"
android:visibility="visible"
android:layout_marginRight="30dp" />
<LinearLayout
android:id="@+id/linear_dialog_testDrive"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:visibility="gone"
>
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/circle_imagen_seleccion_alert"
android:layout_width="70dp"
android:layout_height="70dp"
android:visibility="gone"
android:src="@drawable/lifeon_logo"
android:layout_marginLeft="40dp">
</de.hdodenhof.circleimageview.CircleImageView>
<TextView
android:id="@+id/alert_cambia_test_drive_nombre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/poppins_bold"
android:textColor="@android:color/black"
android:text="@string/nombre"
android:visibility="gone"
android:layout_marginLeft="30dp">
</TextView>
</LinearLayout>
<Button
android:id="@+id/cambiar_seleccion_alert_test_drive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="@drawable/button_shape"
android:text="@string/cambiar_seleccion"
android:layout_gravity="center_horizontal"
android:visibility="gone"
>
</Button>
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
Это java code
recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity(), recyclerView, new RecyclerTouchListener.ClickListener() {
@Override
public void onClick(View view, int position) {
}
@Override
public void onLongClick(View view, int position) {
asesores.clear();
ParseObject itemTestDrive = listadoTestDrive.get(position);
testDriveObjectId = itemTestDrive.getObjectId();
LayoutInflater inflater = getLayoutInflater();
View convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.activity_agreements, null);
alertDialog.setView(convertView);
RecyclerView list = convertView.findViewById(R.id.list);
TextView txt = convertView.findViewById(R.id.text_adm_asigna_asesor);
CircleImageView ima=convertView.findViewById(R.id.circle_imagen_seleccion_alert);
TextView txtNombreSeleccion=convertView.findViewById(R.id.alert_cambia_test_drive_nombre);
Button botonCambiarSeleccion=convertView.findViewById(R.id.cambiar_seleccion_alert_test_drive);
LinearLayout linearLayout=convertView.findViewById(R.id.linear_dialog_testDrive);
botonCambiarSeleccion.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
list.setVisibility(View.VISIBLE);
ima.setVisibility(View.GONE);
txtNombreSeleccion.setVisibility(View.GONE);
botonCambiarSeleccion.setVisibility(View.GONE);
linearLayout.setVisibility(View.GONE);
}
});
ParseQuery<ParseObject> query1 = ParseQuery.getQuery("CitaTestDrive");
query1.include("ComercialAsignado");
query1.getInBackground(testDriveObjectId, new GetCallback<ParseObject>() {
@Override
public void done(ParseObject object, ParseException e) {
if (object.getParseObject("ComercialAsignado") != null) {
txt.setText(getActivity().getResources().getString(R.string.Advertencia_asignacion_a_alguien));
}
}
});
ParseUser user = ParseUser.getCurrentUser();
ParseObject sucursal = user.getParseObject("PerteneceSucursal");
String sucurObjectId = sucursal.getObjectId();
ParseQuery<ParseUser> query = ParseUser.getQuery();
ParseObject suc = ParseObject.createWithoutData("Sucursal", sucurObjectId);
query.whereEqualTo("PerteneceSucursal", suc);
query.include("PerteneceSucursal");
query.whereEqualTo("Rol","Asesor");
query.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> objects, ParseException e) {
if (e == null) {
for (ParseUser obj : objects) {
asesores.add(obj);
}
list.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
list.setHasFixedSize(true);
ListAsesorAdminAsignaTestDrive adapter = new ListAsesorAdminAsignaTestDrive(getApplicationContext(), asesores);
list.setAdapter(adapter);
}
}
});
list.addOnItemTouchListener(new RecyclerTouchListener(getActivity(), list, new RecyclerTouchListener.ClickListener() {
@Override
public void onClick(View view, int position) {
ParseUser item = asesores.get(position);
list.setVisibility(view.GONE);
ima.setVisibility(view.VISIBLE);
txtNombreSeleccion.setVisibility(view.VISIBLE);
botonCambiarSeleccion.setVisibility(View.VISIBLE);
linearLayout.setVisibility(View.VISIBLE);
ParseFile parseFile = item.getParseFile("Avatar");
if (parseFile != null) {
parseFile.getDataInBackground(new GetDataCallback() {
@Override
public void done(byte[] data, ParseException e) {
if (e == null) {
Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
if (bmp != null) {
ima.setImageBitmap(bmp);
}
}
}
});
}
String asesorObjectId = item.getObjectId();
String asesorNombre = item.getString("Nombre");
txtNombreSeleccion.setText(asesorNombre);
alertDialog.setPositiveButton(getApplicationContext().getResources().getString(R.string.guardar), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("CitaTestDrive");
query.getInBackground(testDriveObjectId, new GetCallback<ParseObject>() {
@Override
public void done(ParseObject object, ParseException e) {
object.put("ComercialAsignado", ParseObject.createWithoutData("_User", asesorObjectId));
object.put("PendienteAsignacionAdmin", "Asignado");
object.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Toast.makeText(getApplicationContext(), "Test drive asignado a:" + asesorNombre, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();
}
}
});
}
});
adapter.notifyDataSetChanged();
}
});
alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
}
@Override
public void onLongClick(View view, int position) {
}
}));
list.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
list.setHasFixedSize(true);
ListAsesorAdminAsignaTestDrive adapter = new ListAsesorAdminAsignaTestDrive(getApplicationContext(), asesores);
list.setAdapter(adapter);
alertDialog.show();
}
}));
Благодарим вас за то, что не ответили, если не знаете правильный ответ или способ решить эту проблему.
Обновление: Android сошел с ума !!!. Когда я делаю первый onLongClick, диалоговое окно с предупреждением по-прежнему не работает, так как у меня нет пути к go назад, я нажимаю за пределами диалогового окна с предупреждением, и оно исчезает. Затем я делаю еще один длинный щелчок, и это работает !!! это очень странно, почему это происходит ????? ничего не изменилось.