- Forum-Beiträge: 609
07.10.2019, 11:39:30 via Website
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
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.