Android - Firebase添加到视图计数?

时间:2016-05-24 17:31:37

标签: android firebase android-recyclerview

所以我有一个RecyclerView,我填充了FirebaseRecyclerAdapter。我使用以下代码检索所需的数据:

FirebaseRecyclerAdapter<HashMap,MViewHolder> adapter1 = new FirebaseRecyclerAdapter<HashMap, MViewHolder>(HashMap.class,R.layout.list_item,MViewHolder.class,firebase.limitToLast(5)) {
        @Override
        protected void populateViewHolder(final MViewHolder mViewHolder, HashMap hashMap, int i) {
            mViewHolder.title_txt.setText(hashMap.get("title").toString());
            mViewHolder.body_txt.setText(hashMap.get("body").toString());

            Firebase userRef = new Firebase("https://yournewz.firebaseio.com/users/" + hashMap.get("poster").toString());
            ValueEventListener valueEventListener = new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    mViewHolder.postedTxt.setText("Posted by: " + dataSnapshot.getValue().toString());
                }

                @Override
                public void onCancelled(FirebaseError firebaseError) {

                }
            };

            userRef.addValueEventListener(valueEventListener);

            mViewHolder.context = (MainFragment)getParentFragment();
            //mViewHolder.postedTxt.setText(poster);
        }
    };

 public static class MViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

    TextView title_txt;
    TextView body_txt,postedTxt;
    MainFragment context;

    public MViewHolder(View view) {
        super(view);
        title_txt = (TextView)view.findViewById(R.id.title);
        body_txt = (TextView)view.findViewById(R.id.body);
        postedTxt = (TextView)view.findViewById(R.id.postedBy);

        view.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        int item = getAdapterPosition();
        int pos = 5 - item;
        Firebase firebase = new Firebase("https://yournewz.firebaseio.com/items");
        //firebase.get
        context.GoToStory(postedTxt.getText().toString(),title_txt.getText().toString(),body_txt.getText().toString());
    }
}

我正在尝试实现一个视图计数,该计数将存储项目的“视图”数量。我希望这样做,以便当用户点击recyclerview项目时,它会将一个子项添加到Firebase数据库中的项目,如下所示:

yournews
----items
    ----QLEJCCNGJIDOS (item key)
        ----body: "text"
        ----title: "text"
        ----poster: "UID"
        ----views: "0"

每次点击FirebaseRecyclerAdapter时,是否有办法从RecyclerView获取项目的关键字以添加1项目的视图子项?

非常感谢任何帮助,谢谢。 (对不起措辞不好的问题)

1 个答案:

答案 0 :(得分:2)

var engine = new V8ScriptEngine(); 上的getRef()是您正在寻找的。

您可以这样做:

FirebaseRecyclerAdapter

然后您拥有当前项目的密钥,您可以使用它来填充自定义逻辑。