ListFragment & OnLongClick

D

dignity

Neues Mitglied
0
[english follows]

Hallo,

ich habe da ein Problem mit dem ListFragment, das mich langsam in den Wahnsinn treibt!
Was ich so gesehen habe, wurde diese Frage auch schon häufig in anderen Foren gestellt, jedoch konnte ich nirgends eine Lösung zu meinem Problem finden.

Langer Reder kurzer Sinn:
ich möchte auf einen Long-Click im ActionBar Edit/Share/Delete anzeigen doch leider reagiert meine ListView nicht auf den LongClick.

Hier der Code.

Was mache ich falsch?

-------

Hi,

i got a problem with the ListFragment that's driving me nuts!
From what I've seen this seems to be a rather frequently asked question in various forums, however i couldn't find a solution to my problem yet.

To cut a long story short:
I want to react to a LongClick in my ListView to display some Edit/Share/Delete option in the ActionBar, however my ListView won't fire the LongClick event.

Here's the code.

What am I missing?

Code:
package com.example.longclicktest;

import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MyListFragment extends ListFragment {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setHasOptionsMenu(true);

    String[] items = { "this", "is", "a", "really", "silly", "list" };
    setListAdapter(new ArrayAdapter<String>(getActivity(),
        android.R.layout.simple_list_item_activated_1,
        android.R.id.text1, items));
  }

  @Override
  public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    ListView listView = getListView();
    listView.setLongClickable(true);
    listView.setOnLongClickListener(new View.OnLongClickListener() {

      @Override
      public boolean onLongClick(View view) {
        Toast.makeText(getActivity(), "Long press!",
        Toast.LENGTH_SHORT).show();
        return true;
      }

    });
  }
}
 
1. Ich habe nicht geschrieben, dass ich diese Frage bereits in mehreren Foren gepostet habe, sondern dass ich diese oder eine ähnliche Frage in mehreren Foren bereits gefunden habe.

2. Die englische Übersetzung ist nur ergänzend - du kannst dich also voll und ganz auf die deutsche Version konzentrieren und musst nicht englisch sprechen um die Frage verstehen oder beantworten zu können.

3. Schön, dass du mir den ActionMode erklärst - das löst mein Problem nur leider nicht, denn die Frage lautet ja warum meine ListView nicht auf meinen LongClickListener reagiert. Der ActionMode würde ggf. dann später zum Zug kommen.
 
IceClaw schrieb:
Ich glaube dir nicht, dass du das schon in mehreren Foren gefragt hast und keine Antwort bekommen hast.
Außerdem sprechen wir kein Englisch :razz:
Damit bist du besser bei stackoverflow geholfen!

Lösung:
ActionMode
Der Link für die ganz faulen: Menus | Android Developers

englisch kann nie schaden. auch wenn wir hier zum größteil deutsch sprechen.
 
[english follows]

Hallo,

anbei die Lösung zu meinem Problem.
Ich habe schlicht den falschen Listener verwendet - View.OnLongClickListener statt AdapterView.OnItemLongClickListener.

-------

Hi,

please find attached the solution to my problem.
I simply used the wrong kind of Listener - View.OnLongClickListener instead of AdapterView.OnItemLongClickListener.


Code:
package com.example.longclicktest;

import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemLongClickListener;

public class MyListFragment extends ListFragment {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setHasOptionsMenu(true);

    String[] items = { "this", "is", "a", "really", "silly", "list" };
    setListAdapter(new ArrayAdapter<String>(getActivity(),
        android.R.layout.simple_list_item_activated_1,
        android.R.id.text1, items));
  }

  @Override
  public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    ListView listView = getListView();
    listView.setLongClickable(true);
    listView.setOnItemLongClickListener(new OnItemLongClickListener() {
      public boolean onItemLongClick(AdapterView<?> parent, View view,
          int position, long id) {
        Toast.makeText(getActivity(), "Long press!", Toast.LENGTH_SHORT).show();
        return true;
      }

    });
  }
}
 
Haha :D Sollte nicht so rüber kommen, wie es anscheinend gekommen ist :)
Natürlich können wir hier englisch sprechen (muss nur grade an den Foren-manager denken xD) und anscheinend habe ich generell die Frage ein wenig falsch verstanden :D

Aber jetzt hast du es ja.

Gruß
 

Ähnliche Themen

M
Antworten
1
Aufrufe
836
Kardroid
Kardroid
deka
Antworten
6
Aufrufe
1.176
swa00
swa00
S
Antworten
0
Aufrufe
585
Simon2202
S
Zurück
Oben Unten