У меня есть класс ViewProvider для содержимого фрагмента, который возвращает ListView для одного из фрагментов. В ListView есть пользовательский адаптер, расширяющий класс BaseAdapter. Когда я пытаюсь реализовать элемент clicker, он просто не работает. У меня есть этот код для слушателя:ListView с пользовательским адаптером внутри Fragment не срабатывает onItemClick event
lv.setOnItemClickListener(new ListView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View vi, int pos,
long id) {
try {
Object o = lv.getItemAtPosition(pos);
Event obj_itemDetails = (Event) o;
Toast.makeText(context, "You have chosen : " + " " + obj_itemDetails.getName(), Toast.LENGTH_LONG).show();
Log.d("xxx", "output: "+obj_itemDetails.getName());
} catch(Exception e) {
Log.d(Log.TAG, "Something is wrong...");
}
}
});
... даже за исключением пожаров. В том же классе ViewProvider я добавил еще один список с SimpleAdapter, и он работает отлично. Я инициализировать список тот же:
EventAdapter sta = new EventAdapter(context, events);
final ListView lv = new ListView(context);
lv.setTextFilterEnabled(true);
lv.setAdapter(sta);
, а другой:
final ListView v = new ListView(context);
String[] from = new String[] { "str" };
int[] to = new int[] { android.R.id.text1 };
List<Map<String, String>> items = new ArrayList<Map<String, String>>();
for (int i = 0; i < 20; i++)...//set the items here
SimpleAdapter adapter = new SimpleAdapter(context, items,
android.R.layout.simple_list_item_1, from, to);
v.setAdapter(adapter);
Что я упускаю, где я должен смотреть?
Вот мой EventAdapter:
public class EventAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private List<Event> items = new ArrayList<Event>();
Context ctx;
public EventAdapter(Context context, List<Event> items) {
mInflater = LayoutInflater.from(context);
this.items = items;
this.ctx = context;
}
public int getCount() {
return items.size();
}
public Event getItem(int position) {
return items.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
final Event s = items.get(position);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item, null);
holder = new ViewHolder();
holder.name = (TextView) convertView.findViewById(R.id.eventTitle);
holder.timestamp = (TextView) convertView.findViewById(R.id.eventTime);
holder.location = (TextView) convertView.findViewById(R.id.eventLocation);
holder.pic = (ImageView) convertView.findViewById(R.id.eventLogo);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.name.setText(s.getName());
holder.timestamp.setText(s.getTimestamp());
holder.location.setText(s.getLocation());
if (s.getImage() != null) {
holder.pic.setImageBitmap(s.getImage());
} else {
// MY DEFAULT IMAGE
holder.pic.setImageResource(R.drawable.ic_launcher);
}
return convertView;
}
static class ViewHolder {
TextView name;
TextView timestamp;
TextView location;
ImageView pic;
}
}
согласно моим знаниям, ваш параметр должен быть неправильным. и почему вы не используете метод onItemClick() по умолчанию, реализуя onItemClickListener? или просто используйте lv.setOnItemClickListener (новый OnItemClickListener() {}); – Maulik
Я пробовал этот путь, он тоже не работал. –