尝试将不同标签中的列表视图项添加到同一列表数组中。

时间:2017-09-09 11:43:05

标签: android firebase fragment

我有一个TabView,列表包含来自Firebase和+/-按钮的数据以及列表中的每个项目。现在我想将项目添加到" +"按钮click.But而不是更新数组列表,它在列表视图和标签视图中按钮单击时覆盖项目。

我在这个项目中引用Firebase实时数据库示例。(https://github.com/firebase/quickstart-android/tree/master/database/app/src/main/java/com/google/firebase/quickstart/database)。

下面是我的片段代码,然后由不同的标签片段扩展。

public abstract class MenuFragment extends android.support.v4.app.Fragment {
    private static final String TAG = "MenuFragment";
    private DatabaseReference mDatabase;
    private FirebaseRecyclerAdapter<Post, MenuViewHolder> mAdapter;
    private RecyclerView mRecycler;
    private LinearLayoutManager mManager;
    int count=1;
    public ArrayList<String> orderName = new ArrayList<>();
    public MenuFragment() {}

    @Override
    public View onCreateView (LayoutInflater inflater, ViewGroup container,
                          Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);
    View rootView = inflater.inflate(R.layout.fragment_all, container, false);

    mDatabase = FirebaseDatabase.getInstance().getReference();
    mRecycler = (RecyclerView) rootView.findViewById(R.id.messages_list);
    mRecycler.setHasFixedSize(true);

    return rootView;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    // Set up Layout Manager, reverse layout
    mManager = new LinearLayoutManager(getActivity());
    mManager.setReverseLayout(true);
    mManager.setStackFromEnd(true);
    mRecycler.setLayoutManager(mManager);

    // Set up FirebaseRecyclerAdapter with the Query
    final Query postsQuery = getQuery(mDatabase);
    mAdapter = new FirebaseRecyclerAdapter<Post, MenuViewHolder>(Post.class, R.layout.item_post,
            MenuViewHolder.class, postsQuery) {
        @Override
        protected void populateViewHolder(final MenuViewHolder viewHolder, final Post model, final int position) {

            viewHolder.bindToPost(model, new View.OnClickListener() {
                @Override
                public void onClick(View buttonView) {

                    final DatabaseReference postRef = getRef(position);

                    orderName.add(model.name);

                }
            });
        }
    };
    mRecycler.setAdapter(mAdapter);
}


@Override
public void onDestroy() {
    super.onDestroy();
    if (mAdapter != null) {
        mAdapter.cleanup();
    }
}

public String getUid() {
    return FirebaseAuth.getInstance().getCurrentUser().getUid();
}
public abstract Query getQuery(DatabaseReference databaseReference);}

&#34; ORDERNAME&#34;是我想要按钮点击添加项目的arraylist。 如果需要任何其他信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为您没有使用该列表的相同实例。在第一个选项卡中,您有一个实例,在第二个选项卡中,您有另一个实例。您需要在List的同一个实例上添加这些项目。现在,在第一个选项卡中添加项目,当您再次单击第二个选项卡时,再次实例化列表,这显然是空的。

希望它有所帮助。