Вопрос действительно прост.
Вы не можете вызвать setOnItemClickListener до setAdapter , так как ListView полагается на свои дочерние элементы, а его дочерние элементы неизвестны, пока вы не установите адаптер.
Так что просто сделай так:
public class StatusListView extends ListView implements OnItemClickListener {
private StatusListAdapter adapter;
public StatusListView(Context context) {
super(context);
init();
}
private void init() {
// do other things
...
adapter = new StatusListAdapter(getContext(), R.layout.status_list_item, statuses);
// pay attention here
setAdapter(adapter);
setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
StatusListAdapter adapter = (StatusListAdapter) ((ListView) adapterView).getAdapter();
Status status = (Status) adapter.getItem(position);
Intent intent = new Intent(getContext(), CustomActivity.class);
intent.putExtra(C.extra_keys.status, status);
getContext().startActivity(intent);
}
}
Таким образом, ваше мероприятие будет запущено и запущено!
Извините, но я не успел подробно остановиться на исходном коде Android, если позволю, я опубликую его снова.
Пока, ребята,
Alex