2 Stimmen

Öffnen Sie beim Klicken auf ein ListView-Element einen Dialog

Ich möchte jedes Mal, wenn ich auf ein Listenelement klicke, ein Dialog öffnen.

Dieser Code funktioniert nicht und ich kann den Fehler wirklich nicht finden. Bitte hilf!

 private void loadFeed(){
            try{
                BaseFeedParser parser = new BaseFeedParser();
                messages = parser.parse();
                List descriptions = new ArrayList();
                List titles = new ArrayList(messages.size());
                for (Message msg : messages){
                     descriptions.add(msg.getDescription());
                    titles.add(msg.getTitle() + "\n" +msg.getDate());
                }
                ArrayAdapter adapter = 
                    new ArrayAdapter(this, R.layout.row,titles);
                this.setListAdapter(adapter);
            } catch (Throwable t){
                Log.e("AndroidNews",t.getMessage(),t);
            }
        }

        @Override
        protected void onListItemClick(ListView descriptions, 
                    View v, int position, long id) {
            super.onListItemClick(descriptions, v, position, id);
            String description = descriptions.get(position);
            Dialog dialog = new Dialog(this);
                dialog.setContentView(R.layout.single);
                dialog.setTitle("Blog");
                dialog.setCancelable(true);
                TextView text = (TextView) dialog.findViewById(R.id.TextView1);
                text.setText(description);
                dialog.show();

        }

Mit diesem Code läuft die App, der Dialog zeigt die Beschreibung an, aber die Beschreibung wird auch im Listenelement angezeigt.

messages = parser.parse();
List titles = new ArrayList(messages.size());
for (Message msg : messages){
    titles.add(msg.getTitle() + "\n" +msg.getDate() + "\n\n" + msg.getDescription());
 }
ArrayAdapter adapter = 
                new ArrayAdapter(this, R.layout.row,titles);
this.setListAdapter(adapter);

protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        String selection = l.getItemAtPosition(position).toString();
        Dialog dialog = new Dialog(this);
            dialog.setContentView(R.layout.row2)
            dialog.setCancelable(true);
            TextView text = (TextView) dialog.findViewById(R.id.SinglePost);
            text.setText(selection);
            dialog.show();

    }

0 Stimmen

@kotas: Falsch, was bedeutet das Problem, mit dem du konfrontiert bist? Kannst du mir bitte sagen, ob du Probleme im Logcat hattest oder nicht?

0 Stimmen

Eclipse lässt das Programm nicht laufen...es hebt die Zeile mit roter Linie hervor, um den String description = descriptions.get(position); zu markieren und fordert auf, einen Cast zu descriptions hinzuzufügen (ich habe es versucht, aber das zwingt meine App herunter).

3voto

Octavian A. Damiean Punkte 39044

Dies wird nicht funktionieren, weil die Methode get(int i) weder für den Typ ListView noch für den ArrayAdapter existiert.

EDIT:

Sie scheinen die ListView-Klasse und die List-Schnittstelle zu verwechseln. Das sind zwei völlig verschiedene Dinge!

Eine Klasse, die die List-Schnittstelle implementiert, wie zum Beispiel der ArrayList in Ihrem Fall, speichert Objekte und eine ListView-Klasse ist ein Android-Widget, das Views in Form einer Listenansicht anzeigt.

Ich empfehle Ihnen dringend, sich den Abschnitt des Hello Views-Tutorials anzusehen, damit Sie ein grundlegendes Verständnis der Android-Ansichten bekommen, bevor Sie sich in komplexere Dinge stürzen.

0 Stimmen

Gibt es eine Möglichkeit, es zu beheben, bitte?

0 Stimmen

Wenn ich in der onListItemClick (ListView l, ...) Änderungen vornehme und dann super.onListItemClick (l, ...) aufrufe, werden die Beschreibungen hervorgehoben und ich werde aufgefordert, eine lokale Variable zu erstellen.

0 Stimmen

Es würde helfen, wenn Sie uns mitteilen würden, was Sie mit dieser Get-Methode erreichen möchten.

0voto

bigmerol Punkte 13

Ich mache so etwas ... und es hilft mir sehr. Es gehört nicht mir, also gebührt demjenigen, dem es gebührt, Anerkennung.

http://stackoverflow.com/questions/6467140/how-to-open-dialog-from-listview

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X