2015-07-05 4 views
8

Ich habe unter Codes:Set langer Klick-Listener für Listenansicht

public class MainActivity extends ListActivity { 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 
protected void onListItemClick(ListView l, View v, final int position, long id) { 
    super.onListItemClick(l, v, position, id); 
}} 

Ich brauche diese onListItemLongClick zu ändern() aber wie? Ist es möglich?

+0

Könnten Sie versuchen, etwas detaillierter zu erklären, was Sie tun möchten? Ihr Beispiel Code scheint nichts zu erreichen, so ist es schwer zu erraten ... –

+0

Ich brauche eine Funktion, die, wenn ich lange Zeit (wie 2 Sekunden) auf ein Element in listview klicken Sie dann meine anderen Codes in Funktion ausführen. – Matarata

+1

hast du versucht http://stackoverflow.com/questions/8846707/how-to-implement-a-long-click-listener-on-a-listview? –

Antwort

5

Ihre Frage ist sehr ähnlich zu this one, aber es sieht aus wie es ist kein exaktes Duplikat.

Was Sie bemerkt haben ist, dass die ListActivity Klasse keine Methodenüberschreibung speziell für diesen Fall hat.

Um diese Funktionalität als Methodenüberschreibung hinzufügen möchten, sollten Sie Ihre Klasse die AdapterView.OnItemLongClickListener Schnittstelle implementieren und dann können Sie die onItemLongClick() Methode überschreiben, die Sie bereits haben, ebenso wie die onListItemClick() Methodenüberschreibung wirkt hinzufügen, sondern reagiert auf lange Klicks .

einfach sicher, dass Sie folgen Sie den Anweisungen von this answer, Sie android:longClickable="true" im Layout XML verwenden müssen, oder rufen Sie listview.setLongClickable(true);

Beispiel:

public class MainActivity extends ListActivity implements AdapterView.OnItemLongClickListener { 

    ListView listview; 

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

     ListView listview = (ListView) findViewById(R.id.list); 

     listview.setLongClickable(true); 

    } 

    @Override 
    public boolean onItemLongClick(AdapterView<?> l, View v, 
            final int position, long id) { 

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

     return true; 
    } 

    protected void onListItemClick(ListView l, View v, final int position, long id) { 
     super.onListItemClick(l, v, position, id); 

     Toast.makeText(this, "short clicked pos: " + position, Toast.LENGTH_LONG).show(); 

    } 

//.................... 
+0

Sehr schön, es hat funktioniert. Ihr Beispiel ist so gut.tnx – Matarata

2

versuchen diese

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 

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

      // write your code 

      return false; 
     }}); 
1

Sie den Hörer implementieren könnte, dann der Rückruf als Funktion (Methode) in der Klasse erscheinen würde:

public class MainActivity extends ListActivity implements View.OnLongClickListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     View listView = findViewById(R.id.list_view); 
     listView.setOnLongClickListener(this); 
    } 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 
    } 

    @Override 
    public boolean onLongClick(View v) { 
     // Do your work here 
     return false; 
    } 

} 
0

ja, es ist möglich und sehr leicht zu erreichen einfach müssen Sie die Instanz der Listenansicht wie

ListView lv = (ListView)findViewById(R.id.listview); 
lv.setOnLongClickListener(new View.OnLongClickListener() { 
       @Override 
       public boolean onLongClick(View 

        return true; 
       } 

     });) 

machen in Fall statt ListActivity zu erweitern, können Sie eine Listenansicht in XML erstellen und die Ansicht in MainActivity finden und dem obigen Schritt folgen.

2

Sie einfach tun können, es mit setOnItemLongClickListener

listview.setOnItemLongClickListener(new OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      Toast.makeText(ClassName.class, "Long Clicked Trigger: ", Toast.LENGTH_LONG).show(); 
      return true; 
     } 
});