Naar content
Trending apps
  • Google Duo: videogesprekken van hoge kwaliteit

  • Gmail

  • Maps: Navigatie en OV

  • WhatsApp Messenger

  • Messenger: gratis sms'en en videobellen

Trending games
  • Fortnite

  • Minecraft Earth

  • Dr. Mario World

  • Harry Potter: Wizards Unite

  • Breaking Bad: Criminal Elements

Trending smartphones
  • POCO X3

  • Samsung Galaxy Note 20 Ultra

  • Google Pixel 4a

  • OnePlus Nord

  • Samsung Galaxy A51

Nieuwste tablets
  • Samsung Galaxy Tab S6

  • Samsung Galaxy Tab A 10.5

  • Samsung Galaxy Tab S4

  • Samsung Galaxy Tab S3 9.7

  • Asus Zenpad 3S 10

bartfukkink

bartfukkink

  • Lid sinds 11 februari 2011
  • Berichten 358
  • Reputatie 0
  • #1
  • 10 mei 2011
  • 09:10

Gegroet,

- Kort verhaal:
Na een tijdje voorspoedig knutselen aan de interne snack applicatie zit ik met een probleempje… Ik heb ergens een mooie Imagebutton staan, maar ik kan niet bij het klikevent van deze knop… Weet iemand hoe ik daar bij kan?

- Iets langer verhaal met plaatjes:

Het idee is als volgt:

In het tabblad producten staan allerlei producten die te bestellen zijn. Deze staan in een grote listview omdat het aantal nogal kan veranderen. Ieder item in de listview bevat 2 textvakjes en een imagebutton (het plus icoontje op de screenshot). Als hierop wordt geklikt (het knopje) dan zal het item worden toegevoegd aan de bestelling. Niet heel spannend zou je zeggen. Maar ik krijg het niet voor elkaar om de click functie van het knopje af te vangen.

Op dit moment heb ik in de xml van de imagebutton een onclick gezet. Deze verwijst naar de functie “myClickHandler”. Nou zou ik zeggen dat deze in de producten activity moet (van dit tabblad). Als ik dat doe krijg ik echter de volgende foutmelding:

[COLOR=red]05-10 09:08:17.053: ERROR/AndroidRuntime(228): java.lang.IllegalStateException: Could not find a method myClickHandler(View) in the activity

05-10 09:08:17.053: ERROR/AndroidRuntime(228): Caused by: java.lang.NoSuchMethodException: myClickHandler[/COLOR]
Nou ben ik niet voor 1 gat te vangen dus heb ik in ongeveer elke klasse die maar enigsinds een verband heeft met de producten lijst de click handler gezet (Producten activity, activity die de tabbladen aanstuurd, activity die de applicatie opstart).

Niets werkt echter. Weet iemand in welke klasse ik deze functie moet implementeren? Andere oplossing om via de code de onclick te setten zijn ook prima, maar dan moet er wel bij worden gezet waar ik deze dan moet setten.

2086

Bewerkt (10 mei 2011 09:10)
fifarunnerr

fifarunnerr

  • Lid sinds 13 juli 2010
  • Berichten 1846
  • Reputatie 10
  • #2
  • 10 mei 2011
  • 11:37

heb je de methode:

public void myClickHandler(View v) {

}

In die activity van dat tabblad gezet? Let op die “View v”, want die parameter is nodig ervoor, en die kan hij nu niet vinden.

Overigens wil ik je ook wijzen op:
ExpandableListView | Android Developers
Dat ziet er standaard ongeveer zo uit: http://1.bp.blogspot.com/-tF39Q4p797s/TWPIVdYWYPI/AAAAAAAABnA/CaY4d3SA-LM/s1600/level3list.png

Bewerkt (10 mei 2011 11:37)
bartfukkink

bartfukkink

  • Lid sinds 11 februari 2011
  • Berichten 358
  • Reputatie 0
  • #3
  • 10 mei 2011
  • 11:58

fifarunnerr;156184
heb je de methode:

public void myClickHandler(View v) {

}

In die activity van dat tabblad gezet? Let op die “View v”, want die parameter is nodig ervoor, en die kan hij nu niet vinden.

Yep, staat erin, met de parameter.

fifarunnerr;156184
Overigens wil ik je ook wijzen op:
ExpandableListView | Android Developers
Dat ziet er standaard ongeveer zo uit: http://1.bp.blogspot.com/-tF39Q4p797s/TWPIVdYWYPI/AAAAAAAABnA/CaY4d3SA-LM/s1600/level3list.png

Hmm, ik zie eigenlijk niet echt in hoe dat te gebruiken is… Je hebt daar wel dat click dingetje, maar dat is toch niet helemaal wat ik zoek

Edit: Na nog een uurtje extra Google lastig vallen ben ik bij http://www.geekmind.net/2009/11/android-custom-list-item-with-nested.html gekomen. Klinkt goed, maar blijkt toch nog een beetje lastig :p

Bewerkt (10 mei 2011 11:58)
bartfukkink

bartfukkink

  • Lid sinds 11 februari 2011
  • Berichten 358
  • Reputatie 0
  • #4
  • 10 mei 2011
  • 12:22

Hij lijkt het te doen… Ik vind het alleen niet een hele nette oplossing, maargoed. Voor de oplossing: GEEK!mind: Android: Custom List Item with nested clickable Button. Hierin wordt een custom listadapter gemaakt. Deze wordt gebruikt om het resultaat te tonen en de specifieke onderdelen van de lijst te tonen.

De Adapter:

public class productenListAdapter extends BaseAdapter
{
private LayoutInflater mInflater;
private List<Product> producten;

public productenListAdapter(Context c, List<Product> _producten)
{
// Cache the LayoutInflate to avoid asking for a new one each time.
mInflater = LayoutInflater.from(c);
producten = _producten;
}

@Override
public int getCount() {
return producten.size();
}

@Override
public Object getItem(int position) {
return position;
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;

if(convertView ==null)
{
convertView = mInflater.inflate(R.layout.producten_item, null);

holder = new ViewHolder();

holder.textProductName = (TextView)convertView.findViewById(R.id.txtProductName);
// holder.textProductPrice = (TextView)convertView.findViewById(R.id.txtProductPrice);

holder.addToBestelling = (ImageButton)convertView.findViewById(R.id.product_addButton);

convertView.setTag(holder);
}
else
{
holder = (ViewHolder)convertView.getTag();
}

Product p = producten.get(position);

holder.textProductName.setText(p.getName());
// holder.textProductPrice.setText(p.getPrice().toString());

holder.addToBestelling.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Log.d("INFO", "Hij lijkt het te doen");
}
});

return convertView;
}

class ViewHolder {
TextView textProductName;
TextView textProductPrice;
ImageButton addToBestelling;
}
}
Het item in de ListView:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:src="@drawable/add"
android:background="@null"
android:id="@+id/product_addButton"
/>

<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:id="@+id/llProductItem"
>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtProductName">
</TextView>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtProductPrice">
</TextView>
</LinearLayout>
</RelativeLayout>

Hoop dat iemand er iets aan heeft

Bewerkt (10 mei 2011 12:22)
klwinkel

klwinkel

  • Lid sinds 23 oktober 2010
  • Berichten 951
  • Reputatie 0
  • #5
  • 10 mei 2011
  • 17:05

Dat is toch vrij normaal voor het vullen/tekenen van de list items, hoe deed je het dan dan zonder die list adapter, ik doe het altijd zo.

Gaan nu de kliks op het list-item zelf wel goed, of doe je daar (nog) niks mee?

Bewerkt (10 mei 2011 17:05)
bartfukkink

bartfukkink

  • Lid sinds 11 februari 2011
  • Berichten 358
  • Reputatie 0
  • #6
  • 11 mei 2011
  • 08:45

klwinkel;156438
Dat is toch vrij normaal voor het vullen/tekenen van de list items, hoe deed je het dan dan zonder die list adapter, ik doe het altijd zo.

Gaan nu de kliks op het list-item zelf wel goed, of doe je daar (nog) niks mee?

Ik gebruikte een standaard adapter, de ArrayAdapter volgens mij.

En ik heb de onListItemClick verder niet nodig dus die gebruik ik nietEr gebeurt nu dus helemaal niets als ik toch op een rij klik.

Bewerkt (11 mei 2011 08:45)
klwinkel

klwinkel

  • Lid sinds 23 oktober 2010
  • Berichten 951
  • Reputatie 0
  • #7
  • 11 mei 2011
  • 17:13

bartfukkink;157042
En ik heb de onListItemClick verder niet nodig dus die gebruik ik nietEr gebeurt nu dus helemaal niets als ik toch op een rij klik.

Ik kan me herinneren dat ie dan niet goed meer onderscheid kan maken tussen de button click en de list click. Maar daar is ook wel weer een oplossing voor (natuurlijk), die ik uit het hoofd niet weet trouwens. Maar als je er toch nog tegenaan loopt, heb ik nog wel een voorbeeld.

Bewerkt (11 mei 2011 17:13)

Reageer

Om te reageren, dien je te zijn ingelogd. Druk op de onderstaande knop om in te loggen of maak een nieuwe account aan.

Inloggen Registreren