Dialog schliesst gleich wieder

  • Antworten:1
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 384

07.10.2019, 11:39:30 via Website

Hallo zusammen

Wenn ich auf ein ListItem lange Klicke, dann soll ein Dialog angezeigt werden.

package ch.robbisoft.sun_app;

import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

import java.util.List;

import ch.robbisoft.sun_app.Ort;

public class LoadActivity extends AppCompatActivity {

public static final String FORMAT_DOUBLE = "%2.4f";
private ListView ortliste;
private Speicher speicher = null;
private List<Ort> orte = null;
private Context ctx;
private OrtListeAdapter adapter;
private Intent param;
private AlertDialog.Builder dlg_loeschen;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_load);

    param = new Intent();

    ctx = getApplicationContext();
    speicher = new Speicher(ctx);

    orte = speicher.out_data();

    ortliste = (ListView) findViewById(R.id.lisv_orte);
    adapter = new OrtListeAdapter(ctx, 0);
    ortliste.setAdapter(adapter);
    adapter.notifyDataSetInvalidated();

   ortliste.setOnItemClickListener(new ListView.OnItemClickListener() {
       @Override
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Ort lage = orte.get(position);
            param.putExtra("ort_breit", lage.breite);
            param.putExtra("ort_lang", lage.laenge);
            setResult(2, param);
            finish();
       }
   });

   DialogInterface.OnClickListener dlg_positivListener = new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
   };
   DialogInterface.OnClickListener dlg_negativListener = new DialogInterface.OnClickListener() {
       @Override
       public void onClick(DialogInterface dialog, int which) {
           dialog.dismiss();
       }
   };
   ortliste.setOnItemLongClickListener(new ListView.OnItemLongClickListener() {
       @Override
       public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
           Ort lage = orte.get(position);
           dlg_loeschen = new AlertDialog.Builder(LoadActivity.this);
           dlg_loeschen.setMessage("Wollen Sie wirklich den Ort " + lage.name + " Löschen?");
           dlg_loeschen.setPositiveButton("Ja", dlg_positivListener);
           dlg_loeschen.setNegativeButton("Nein", dlg_negativListener);
           dlg_loeschen.show();
           return false;
       }
   });
}

class OrtListeAdapter extends ArrayAdapter<Ort> {

    public OrtListeAdapter( Context context, int resource) {
        super(context, resource);
    }

    @Override
    public int getCount(){
        return orte.size();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent){
        if(convertView == null){
            convertView = getLayoutInflater().inflate(R.layout.ort_liste, null);
        }
        TextView name = (TextView) convertView.findViewById(R.id.txt_name);
        TextView breit = (TextView) convertView.findViewById(R.id.txt_breit);
        TextView lang = (TextView) convertView.findViewById(R.id.txt_lang);
        Ort pool_ort = orte.get(position);
        name.setText(pool_ort.name);
        breit.setText(String.format(FORMAT_DOUBLE, pool_ort.breite));
        lang.setText(String.format(FORMAT_DOUBLE, pool_ort.laenge));

        return convertView;
    }
}

}

Der Dialog wird auch angezeigt. Aber wenn ich das Item loslasse wird der Dialog gleich geschlossen, ohne dass ich einer der beiden Buttons anklicken kann.

DialogInterface.OnClickListener dlg_positivListener = new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
   };
   DialogInterface.OnClickListener dlg_negativListener = new DialogInterface.OnClickListener() {
       @Override
       public void onClick(DialogInterface dialog, int which) {
           dialog.dismiss();
       }
   };
   ortliste.setOnItemLongClickListener(new ListView.OnItemLongClickListener() {
       @Override
       public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
           Ort lage = orte.get(position);
           dlg_loeschen = new AlertDialog.Builder(LoadActivity.this);
           dlg_loeschen.setMessage("Wollen Sie wirklich den Ort " + lage.name + " Löschen?");
           dlg_loeschen.setPositiveButton("Ja", dlg_positivListener);
           dlg_loeschen.setNegativeButton("Nein", dlg_negativListener);
           dlg_loeschen.show();
           return false;
       }
   });

Was muss ich machen damit der Dialog stehen bleibt?

Gruss Renato

Diskutiere mit!
  • Forum-Beiträge: 384

07.10.2019, 21:04:28 via Website

Ich habe in der Methode "onItemLongClick" den return Wert auf true gesetzt und nun wird der Dialog angezeigt.

Hilfreich?
Diskutiere mit!