דבר ראשון, כמעט לכל קומפוננט בXML ניתן להוסיף ארוע.
בJAVA את אומרת לו:
something.setOnClickListener(...);
דבר נוסף;
כדי להוסיף ארוע לitem ברשימה יש 2 אופציות:
1. ארוע בלחיצה על השורה כולה, אותה אפשר להוסיף לרשימה או לitem.
הוספת ארוע לitem של listView:
listview.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?>adapter,View v, int position){ ItemClicked item = adapter.getItemAtPosition(position); Intent intent = new Intent(Activity.this,destinationActivity.class); //based on item add info to intent startActivity(intent); }});
או בתוך פונקציית getView של האדפטר את יכולה לשים פונקציה setOnClickLister
2. אפשר לשים על כל רכיב באדפטר ארוע אחר, כמו כל אקטיביטי שבו על כל רכיב יש לך ארועים. שוב פעם בתוך פונקצית getView את מגדירה את זה...
הסתדר?
אוקיי ממש תודה רבה
לא שמתי קוד מדוייק, שמתי רק את הכיוון, תחפרי בגוגל על כל הפתרונות המוצעים.
בגדול, תבני CustomListAdapter, תיצרי XML של LAYOUT מיוחד עבור השורה עם כל הרכיבים.
בפונקצית GETVIEW שימי בכל רכיב מה שבא לך כולל מלל וארועים ואז תקראי לאדפטר מהlistView בActivity
בהצלחה!
האמת שלא כל כך, ניסיתי להעתיק את הקוד שנתת לי , היה שגיאה בסינטקסט ,
ניסיתי פונקציה מגוגל , צרפתי CustomListAdapter adapter = new CustomListAdapter(this, forms); ListView listView = (ListView) findViewById(R.id.commitment_forms_list); listView.setAdapter(adapter); // listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { // @Override // public void onItemClick(android.widget.AdapterView<?> parent, // View view, int position, long id) { // Intent intent = new Intent(CommitmentsActivity.this, CommitmentFormActivity.class); // startActivity(intent); // Toast.makeText(CommitmentsActivity.this, // forms.get(position).getName(), Toast.LENGTH_LONG).show(); // } });
ועדיין לא מגיע לפונקציה הזאתי
אשמח אם תעזרי לי למצוא מה יכול להיות הבעיה!
אין מילים
הסתדרת?
android:clickable אומר שאת מאפשרת שילחצו עליו. ברירת המחדל היא שאפשר ללחוץ על הכל.
אבל את גם צריכה להגדיר מה יקרה ברגע שאת לוחצת עליו... מבינה?
כשאת מגדירה: getItemAtPosition את בעצם מקבלת את הitem בנמצא בposition מסויים ועליו מכילה ארוע.
כשיש ארועים שאת לא מבינה את פשרם, תתרגמי לך את המלל... זה די פשוט...
שלום חני לא כ"כ הבנתי מה זה
ItemClicked item = adapter.getItemAtPosition(position);
מי זה ה ItemClicked item? האם זה המשתנה שבו אני מכניסה את ה
id של הitem שעליו עשיתי android:clickable="true"
תודה רבה מראש על תשובתך
דבר ראשון, כמעט לכל קומפוננט בXML ניתן להוסיף ארוע.
בJAVA את אומרת לו:
something.setOnClickListener(...);
דבר נוסף;
כדי להוסיף ארוע לitem ברשימה יש 2 אופציות:
1. ארוע בלחיצה על השורה כולה, אותה אפשר להוסיף לרשימה או לitem.
הוספת ארוע לitem של listView:
listview.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?>adapter,View v, int position){ ItemClicked item = adapter.getItemAtPosition(position); Intent intent = new Intent(Activity.this,destinationActivity.class); //based on item add info to intent startActivity(intent); } });
או בתוך פונקציית getView של האדפטר את יכולה לשים פונקציה setOnClickLister
2. אפשר לשים על כל רכיב באדפטר ארוע אחר, כמו כל אקטיביטי שבו על כל רכיב יש לך ארועים. שוב פעם בתוך פונקצית getView את מגדירה את זה...
בהצלחה!