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?
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();
}
//....................
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;
}
});
essaye ça
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View v,
int index, long arg3) {
// write your code
return false;
}});
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;
}
}