setOnClickListener d'un ListView ne fonctionne pas
donc im essayant de mettre en place un setOnClickListener pour ma ListView mais son causant un crash dans mon programme pour quelque raison que quand j'essaie.. je suis assez nouveau à la programmation alors, quand il s'agit de dépannage je ne peux pas faire grand chose malheureusement 🙁 mon code est ci-dessous afin que toutes les idées sur ce qui pourrait être mal serait extrêmement utile
public class HomePageActivity extends Activity {
//ListView that holds the items
ListView lstTest;
//Array Adapter that holds the ArrayList and displays the items on the ListView
AlertsAdapter arrayAdapter;
//List that hosts the items
ArrayList<Alerts> alrts = null;
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.homepage);
//Initialize the ListView
lstTest = (ListView)findViewById(R.id.lstText);
//Initialize the ArrayList
alrts = new ArrayList<Alerts>();
//Initialize the array adapter
arrayAdapter = new AlertsAdapter(HomePageActivity.this, R.layout.listitems,alrts);
//Set the above adapter as the adapter of choice for our list
lstTest.setAdapter(arrayAdapter);
lstTest.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(
HomePageActivity.this,
PromotionActivity.class
);
startActivity(intent);
}
});
//... ... ...
}
}
toute pensée? im coincé 🙁
edit: affichage d'erreur du fichier journal à partir de ddms
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): FATAL EXCEPTION: main
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): java.lang.RuntimeException: Unable to start activity ComponentInfo{hypenyte.bdutcher.promopost/hypenyte.bdutcher.promopost.HomePageActivity}: java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): at android.os.Handler.dispatchMessage(Handler.java:99)
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): at android.os.Looper.loop(Looper.java:123)
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): at android.app.ActivityThread.main(ActivityThread.java:4627)
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): at java.lang.reflect.Method.invokeNative(Native Method)
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): at java.lang.reflect.Method.invoke(Method.java:521)
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): at dalvik.system.NativeStart.main(Native Method)
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): Caused by: java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): at android.widget.AdapterView.setOnClickListener(AdapterView.java:750)
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): at hypenyte.bdutcher.promopost.HomePageActivity.onCreate(HomePageActivity.java:58)
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
08-04 04:14:26.351: ERROR/AndroidRuntime(8882): ... 11 more
j'ai vu qu'il dit que je voulez probablement setOnItemClickListener qui est à l'origine de ce que j'avais codé comme, mais qu'il ne serait pas de travail depuis eclipse me dit que mon code est faux
source d'informationauteur dootcher
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
setOnItemClickListener()
et puis
new android.widget.AdapterView.OnItemClickListener()
pas
new View.OnItemClickListener()
Au lieu d'utiliser
setOnClickListener
essayez d'utilisersetOnItemClickListener
Si vous utilisez Butterknife, vérifiez que vous n'avez pas de OnClick annotation pour un AdapterView descentant (Spinner, ListView, etc.)
Appel
ButterKnife.inject(this, view);
lève l'exceptionCaused by: java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead
tout d'abord de définir la valeur à l'intérieur de votre activité principale où votre utilisation de votre listview:
en place de l'adaptateur de votre listview:
Donc finalement ça ressemble:
lorsque vous utilisez l'un affichage personnalisé pour remplir les données à l'intérieur de la liste.
Ensuite dans votre Activité principale file.xml dans le parent de la mise{ l'intérieur de laquelle listview est-il} définir cette option:
et si vous utilisez l'un des boutons/textview à l'intérieur de listview, définissez cette propriété sur que textview/bouton:
Pour option de défilement dans votre listview il suffit d'ajouter cette ligne à l'intérieur d'activité:
Comme par j'ai compris, je suis en train de répondre, et j'espère que ça aidera, si quelqu'un a trouvé un certain nombre de corrections ou utiles, ils sont les bienvenus.