Sunday, 25 August 2013

Getting data object in button's (located in ListView row) listener

Getting data object in button's (located in ListView row) listener

Okay, title is propably unclear, here is what i want to do: I have
ListView and inside each row there is some text and a button. I'm setting
listener to each button (in my custom list Adapter) like that:
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater li;
li = LayoutInflater.from(context);
convertView = li.inflate(R.layout.list_item, null);
}
Item elem = elems.get(position);
TextView mainText = (TextView) convertView.findViewById(R.id.main_text);
TextView sideText = (TextView) convertView.findViewById(R.id.side_text);
mainText.setText(elem.desc);
sideText.setText(timestampToString(elem.date));
Button againButton = (Button) convertView
.findViewById(R.id.itemAgainButton);
againButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// onClick actions
}
});
Now inside onClick method i need to acces Item object from which current
row was created. I'm not sure if it's clear what i want to do. Here i'm
setting listener on ListView elements in my Activity class
lista.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Item item = (Item) parent.getItemAtPosition(position);
Intent i = new Intent(getApplicationContext(),
DidItItemActivity.class);
i.putExtra("id", item.id);
startActivity(i);
}
});
and I can use parent.getItemAtPosition(position) which gives me exactly
what i need. How can i do the same in Adapter class?

No comments:

Post a Comment