I am trying to use the material dialogs library Material Dialog and i can't get the callback to work for the custom adapter. The items are displayed perfectly but on click of the items i don't get any callback.
Base Adapter
public class EcardBaseAdapter extends BaseAdapter implements View.OnClickListener {
private LayoutInflater mInflater;
private List<? super Greeting> items;
private Context context;
private final int width;
private final int height;
public EcardBaseAdapter(List<Greeting> items, Context context) {
this.context = context;
mInflater = LayoutInflater.from(context);
this.items = items;
final DisplayMetrics metrics = context.getResources().getDisplayMetrics();
this.width = metrics.widthPixels;
this.height = metrics.heightPixels;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int i) {
return items.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
ViewHolder holder;
if (convertView == null) {
view = mInflater.inflate(R.layout.custom_item, parent, false);
holder = new ViewHolder();
holder.avatar = (ImageView) view.findViewById(R.id.image_path);
holder.name = (TextView) view.findViewById(R.id.custom_event_name);
view.setTag(holder);
} else {
view = convertView;
holder = (ViewHolder) view.getTag();
}
if (items.get(position) instanceof ECard) {
ECard eCard = (ECard) items.get(position);
Log.i("test", eCard.getImage() + " " + eCard.getSubject());
if (eCard.getImage() != null) {
Glide.with(context)
.load(eCard.getImage())
.fitCenter()
.override(width, height / 2)
.into(holder.avatar);
//holder.avatar.setImageURI(Uri.parse(eCard.getImage()));
}
holder.name.setTextColor(ContextCompat.getColor(context, R.color.darkGrey));
holder.name.setText(eCard.getSubject());
}
return view;
}
@Override
public void onClick(View view) {
Log.i("click", "itemclick");
}
private class ViewHolder {
public ImageView avatar;
public TextView name;
}
}
Code in the activity which uses the adapter
new MaterialDialog.Builder(birthday_details.this)
.title("Ecard")
.adapter(adapter,
new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text) {
Toast.makeText(birthday_details.this, "Clicked item " + which, Toast.LENGTH_SHORT).show();
}
})
.show();