web-dev-qa-db-fra.com

Définir un clic long sur l'écouteur pour listview

J'ai les codes ci-dessous:

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);
}}

J'ai besoin de changer ceci en onListItemLongClick () mais comment? C'est possible?

9
Matarata

Votre question est très similaire à celle-ci , mais il semble que ce ne soit pas une copie exacte.

Ce que vous avez remarqué, c'est que ListActivity class n'a pas de substitution de méthode spécifiquement pour ce cas.

Pour ajouter cette fonctionnalité en tant que substitution de méthode, votre classe doit implémenter l'interface AdapterView.OnItemLongClickListener. Vous pouvez ensuite ajouter la substitution de méthode onItemLongClick(), qui agit exactement comme la méthode onListItemClick() déjà remplacée, mais qui répond aux clics longs.

Assurez-vous simplement que vous suivez les instructions de cette réponse , vous devez utiliser Android:longClickable="true" dans le modèle XML, ou appelez listview.setLongClickable(true);

Exemple:

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();  

    }

 //....................
5
Daniel Nugent

vous pouvez simplement le faire avec 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;
        }
});
3
Inzimam Tariq IT

essaye ça

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

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

             // write your code

            return false;
        }}); 
2
SUNIL GOWROJI

Vous pouvez implémenter le programme d'écoute, puis le rappel apparaîtra comme une fonction (méthode) dans votre classe:

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;
    }

}
1
Simas