wie man einen Listener für lange Klicks in einer Listenansicht implementiert

Lesezeit: 4 Minuten

wie man einen Listener fur lange Klicks in einer Listenansicht
Techayu

ich will hinzufügen OnLongClickListener in meiner Listenansicht. Immer wenn der Benutzer lange auf das Element in der Liste drückt, sollte eine Aktion ausgeführt werden, aber mein Code fängt diesen Listener nicht ab. Bitte lassen Sie mich wissen, wo ich falsch liege. Der ähnliche Code funktioniert für setOnItemClickListener sehr gut.

Hier ist der Code:

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

            public boolean onItemLongClick(AdapterView<?> arg0, View v,
                    int index, long arg3) {
                // TODO Auto-generated method stub
                 Log.d("in onLongClick");
                 String str=listView.getItemAtPosition(index).toString();

                 Log.d("long click : " +str);
                return true;
            }
}); 

  • Haben Sie daran gedacht, Ihrer Klassendeklaration “implements OnItemLongClickListener” hinzuzufügen?

    – barrie

    13. Januar 2012 um 6:35 Uhr

  • in xml sehen ob langer klick aktiviert ist?

    – Das Leben mit Android verbinden

    13. Januar 2012 um 7:04 Uhr

  • Vielleicht haben Sie einen Gesture Listener oder so etwas, der das lange Drücken erfasst und verbraucht.

    – Jon Zangitu

    24. Januar 2013 um 8:57 Uhr

1645912987 382 wie man einen Listener fur lange Klicks in einer Listenansicht
Dinesh Sharma

Du musst einstellen setOnItemLongClickListener() in der Listenansicht:

lv.setOnItemLongClickListener(new OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                    int pos, long id) {
                // TODO Auto-generated method stub

                Log.v("long clicked","pos: " + pos);

                return true;
            }
        }); 

Das XML für jedes Element in der Liste (falls Sie ein benutzerdefiniertes XML verwenden) muss vorhanden sein android:longClickable="true" auch (oder Sie können die Convenience-Methode verwenden lv.setLongClickable(true);). Auf diese Weise können Sie eine Liste mit nur einigen Elementen haben, die auf Longclick reagieren.

Ich hoffe, das wird Ihnen helfen.

  • Unbedingt anrufen lv.setLongClickable(true); Auch.

    – Chris Lacy

    6. Januar 2013 um 5:10 Uhr

  • Das hat bei mir nicht funktioniert. Aber das geht: lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {...

    – Luis A. Florit

    16. Juni 2013 um 3:47 Uhr

  • irgendwie ist adroid:longClickable=”true” voreingestellt. Ich verwende API 19. Also musste ich es überhaupt nicht angeben.

    – Benutzer1592714

    12. November 2013 um 0:21 Uhr

  • Android setzt beim Setzen des Listeners longClickable=true.

    – Steven Spungin

    7. August 2017 um 13:00 Uhr


  • Welcher Wert wird in der langen ID gespeichert? in public boolean onItemLongClick(AdapterView arg0, View arg1, int pos, long id

    – Femn Dharamshi

    26. Juli 2018 um 7:50 Uhr

Wenn Ihre ListView Reihe item bezieht sich auf eine separate XML-Datei, unbedingt hinzufügen android:longClickable="true" zu dieser Layoutdatei zusätzlich zur Einstellung setOnItemLongClickListener() zu Ihrer Listenansicht.

  • Danke! Habe mir damit den Kopf zerbrochen.

    – Schahi

    22. August 2013 um 10:39 Uhr

1645912987 921 wie man einen Listener fur lange Klicks in einer Listenansicht
Ardi

oder versuchen Sie diesen Code:

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

            public boolean onItemLongClick(AdapterView<?> arg0, View v,
                    int index, long arg3) {

    Toast.makeText(list.this,myList.getItemAtPosition(index).toString(), Toast.LENGTH_LONG).show();
                return false;
            }
}); 

wie man einen Listener fur lange Klicks in einer Listenansicht
nandesh

Ich denke, dieser obige Code funktioniert bei LongClicking auf die Listenansicht, nicht auf die einzelnen Elemente.

warum nicht verwenden registerForContextMenu(listView). und erhalten Sie dann den Rückruf in OnCreateContextMenu.

Für die meisten Anwendungsfälle wird dies gleich funktionieren.

Im xml hinzufügen

<ListView android:longClickable="true">

In Java-Datei

lv.setLongClickable(true) 

versuchen Sie dieses setOnItemLongClickListener()

lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int pos, long l) {
                //final String category = "Position at : "+pos;
                final String category = ((TextView) view.findViewById(R.id.textView)).getText().toString();
                Toast.makeText(getActivity(),""+category,Toast.LENGTH_LONG).show();
                args = new Bundle();
                args.putString("category", category);
                return false;
            }
        });

1645912988 290 wie man einen Listener fur lange Klicks in einer Listenansicht
Ayyoub

das sollte funktionieren

ListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

            @Override
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                                           int pos, long id) {
                // TODO Auto-generated method stub

                Toast.makeText(getContext(), "long clicked, "+"pos: " + pos, Toast.LENGTH_LONG).show();

                return true;
            }
        });

Vergessen Sie auch nicht, in Ihrem XML android:longClickable="true" oder wenn Sie eine benutzerdefinierte Ansicht haben, fügen Sie diese Ihrer benutzerdefinierten Ansichtsklasse hinzu youCustomView.setLongClickable(true);

Hier ist die Ausgabe des obigen Codes
Geben Sie hier die Bildbeschreibung ein

wie man einen Listener fur lange Klicks in einer Listenansicht
Oliver Dixon

Ich habe die meisten dieser Antworten ausprobiert und sie sind alle für TextViews fehlgeschlagen, bei denen Autolink aktiviert war, aber auch langes Drücken an derselben Stelle verwendet werden musste!

Ich habe eine benutzerdefinierte Klasse erstellt, die funktioniert.

public class TextViewLinkLongPressUrl extends TextView {

    private boolean isLongClick = false;

    public TextViewLinkLongPressUrl(Context context) {
        super(context);
    }

    public TextViewLinkLongPressUrl(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public TextViewLinkLongPressUrl(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public void setText(CharSequence text, BufferType type) {
        super.setText(text, type);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {

        if (event.getAction() == MotionEvent.ACTION_UP && isLongClick) {
            isLongClick = false;
            return false;
        }

        if (event.getAction() == MotionEvent.ACTION_UP) {
            isLongClick = false;
        }

        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            isLongClick = false;
        }

        return super.onTouchEvent(event);
    }

    @Override
    public boolean performLongClick() {
        isLongClick = true;
        return super.performLongClick();
    }
}

868700cookie-checkwie man einen Listener für lange Klicks in einer Listenansicht implementiert

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy