在FastAdapter上实现OnClickListener并实现IItem [英] Implement OnClickListener on FastAdapter implementing IItem

查看:125
本文介绍了在FastAdapter上实现OnClickListener并实现IItem的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在学习将FastAdapterRealm一起使用. 这里是我的模型,这就是我在Fragment中实现OnClick的方式. :

I am learning to use FastAdapter with Realm. Here is my model and this is how I implement OnClick in a Fragment:

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;
    }
});

但是我没有出现Toast.有人可以告诉我我想念什么吗?

But I don't get the Toast appearing. Can anybody please tell me what am I missing?

更新:这是我的模型

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);
        }
    }
}

推荐答案

您的项目不是enabled,这导致点击事件未转发.只需更改您的代码以返回isEnabled=true

Your item is not enabled which results in the click event not being forwarded. Just change your code to return isEnabled=true

@Override
public boolean isEnabled() {
    return true;
}

这篇关于在FastAdapter上实现OnClickListener并实现IItem的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆