【问题标题】:Android get data from each ViewHolder of FirebaseRecyclerAdapterAndroid从FirebaseRecyclerAdapter的每个ViewHolder获取数据
【发布时间】:2017-08-27 03:37:58
【问题描述】:

如何从每个 ViewHolder 中获取数据为“false”的数据?

这是我的适配器初始化

mAdapter = new FirebaseRecyclerAdapter<Trace, TraceViewHolder>(Trace.class, R.layout.fragment_trace_item, TraceViewHolder.class, mDatabase))
{
    @Override
    protected void populateViewHolder(final TraceViewHolder viewHolder, final Trace model, final int position)
    {
        if(viewHolder.isAvailable == true)
        {
            Toast.makeText(context, "true", Toast.LENGTH_SHORT).show();
        }
        else
        {
            Toast.makeText(context, "false", Toast.LENGTH_SHORT).show();
        }
    }
}

这是我的 ViewHolder 类

public class TraceViewHolder extends RecyclerView.ViewHolder
{
    public boolean isAvailable;

    public TraceViewHolder(View itemView)
    {
        super(itemView);
    }

    public void bindToTrace(final Trace trace, final Context context)
    {
        if(trace.value.equals("one")
        {
            isAvailable = true;
        }
        else(trace.value.equals("one")
        {
            isAvailable = false;
        }
    }
}

在这里,我有 RecyclerView,其中包含“一”或“二”的项目。我要做的是检查每个 ViewHolder (每个项目)是否具有值“一”或“二”,如果该项目具有“一”,它应该敬酒“真”,如果该项目具有“二” ,它应该烤“假”。

但是当我运行程序时,它只会为所有项目烤“假”。

有人知道怎么做吗?

【问题讨论】:

标签: android


【解决方案1】:

您可以创建一个回调,以便在每次视图绑定到数据时调用。

YourActivity/YourFragment

FirebaseRecyclerAdapter.OnDataBindedListener listener = new FirebaseRecyclerAdapter.OnDataBindedListener {
    @Override
    public void onDataBind(boolean isAvaiable) {
        // Display toasts
    }
}

// Pass listener variable to constructor of your Adapter
mAdapter = new FirebaseRecyclerAdapter<Trace, TraceViewHolder>(Trace.class, R.layout.fragment_trace_item, TraceViewHolder.class, mDatabase, listener);

FirebaseRecyclerAdapter

private final OnDataBindedListener listener;

public FirebaseRecyclerAdapter(..., OnDataBindedListener listener) {
    ...
    this.listener = listener;
}

@Override
public void onBindViewHolder(TraceViewHolder holder, int position) {
    // Get your Trace object
    Trace trace = traceList.get(position);

    // Call the method implemented inside your activity/fragment
    listener.onDataBind(trace.value.equals("one"));
}


public interface OnDataBindedListener {
    void onDataBind(boolean isAvaiable);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 2014-02-12
    相关资源
    最近更新 更多