J'apprends à utiliser FastAdapter
avec Realm
. Here est mon modèle et voici comment je mets en œuvre OnClick
dans un Fragment
:Mettre en œuvre OnClickListener sur FastAdapter implémentant IItem
fastAdapter.withOnClickListener(new FastAdapter.OnClickListener<ProductsModel>() {
@Override
public boolean onClick(View v, IAdapter<ProductsModel> adapter, ProductsModel item, int position) {
Toast.makeText(getActivity(), "got it", Toast.LENGTH_SHORT).show();
return false;
}
});
Mais je ne suis pas le Toast
apparaissant. Quelqu'un peut-il me dire ce qui me manque?
Mise à jour: Voici mon modèle
public class ProductsModel extends RealmObject implements IItem<ProductsModel, ProductsModel.ViewHolder>{
@PrimaryKey
private String code;
private String name, generic, packSize;
private int quantity, status;
//variables needed for adapter
protected boolean isSelected = false; // defines if the item is selected
@Ignore
protected Object tag;// defines if this item is isSelectable
@Ignore
protected boolean isSelectable = true;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPackSize() {
return packSize;
}
public void setPackSize(String packSize) {
this.packSize = packSize;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getGeneric() {
return generic;
}
public void setGeneric(String generic) {
this.generic = generic;
}
@Override
public Object getTag() {
return tag;
}
@Override
public ProductsModel withTag(Object tag) {
this.tag = tag;
return this;
}
@Override
public boolean isEnabled() {
return false;
}
@Override
public ProductsModel withEnabled(boolean enabled) {
return null;
}
@Override
public boolean isSelected() {
return isSelected;
}
@Override
public ProductsModel withSetSelected(boolean selected) {
return null;
}
@Override
public boolean isSelectable() {
return isSelectable;
}
@Override
public ProductsModel withSelectable(boolean selectable) {
this.isSelectable = selectable;
return this;
}
@Override
public int getType() {
return R.id.pwdsList;
}
@Override
public int getLayoutRes() {
return R.layout.item_product;
}
@Override
public View generateView(Context ctx) {
ViewHolder viewHolder = getViewHolder(LayoutInflater.from(ctx).inflate(getLayoutRes(), null, false));
bindView(viewHolder, Collections.EMPTY_LIST);
return viewHolder.itemView;
}
@Override
public View generateView(Context ctx, ViewGroup parent) {
ViewHolder viewHolder = getViewHolder(LayoutInflater.from(ctx).inflate(getLayoutRes(), parent, false));
bindView(viewHolder, Collections.EMPTY_LIST);
return null;
}
private ViewHolder getViewHolder(View view) {
return new ViewHolder(view);
}
@Override
public ViewHolder getViewHolder(ViewGroup parent) {
return getViewHolder(LayoutInflater.from(parent.getContext()).inflate(getLayoutRes(), parent, false));
}
@Override
public void bindView(ViewHolder holder, List<Object> payloads) {
holder.name.setText(name + " " + packSize + " (" + quantity + ")");
holder.generic.setText(generic);
holder.itemView.setSelected(isSelected());
}
@Override
public void unbindView(ViewHolder holder) {
holder.name.setText(null);
holder.generic.setText(null);
}
@Override
public boolean equals(int id) {
return false;
}
@Override
public ProductsModel withIdentifier(long identifier) {
return null;
}
@Override
public long getIdentifier() {
return 0;
}
static class ViewHolder extends RecyclerView.ViewHolder{
ATextView name, generic;
public ViewHolder(View itemView) {
super(itemView);
name = (ATextView) itemView.findViewById(R.id.name);
generic = (ATextView) itemView.findViewById(R.id.generic);
}
}
}
L'attribut withSelectable de votre adaptateur fastadapter est-il défini sur true? –
Oui 'fastAdapter.withSelectable (true);' –
Vous avez incorrectement implémenté FastAdapter avec Realm. Model dans FastAdapter est un élément dans l'adaptateur recycleur, ce n'est pas un modèle comme vous le pensez. Wrong est ici'ProductsModel extends RealmObject'. Vous devez obtenir un exemple et suivez-le ici https://github.com/mikepenz/FastAdapter/tree/develop/app. –