2017-09-09 51 views
0

我有一個TabView,其中包含來自Firebase和+/-按鈕的數據以及列表中的每個項目。現在我想在「+」按鈕單擊時將項目添加到數組列表中。但不是更新數組列表而是更新數組列表按鈕上的項目在列表視圖中以及選項卡視圖中單擊。嘗試將不同選項卡的列表視圖項添加到同一個列表數組中。

我指的是該項目的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);} 

「orderName」是我希望在按鈕單擊時添加項目的數組列表。 請讓我知道是否需要任何其他信息。

+0

你是說每次你有一個單獨的項目在你的列表中被覆蓋? –

+0

是的....在不同的按鈕點擊它只添加特定的項目數組列表 – user2718012

+0

所以ArrayList只包含一個項目? –

回答

0

發生這種情況是因爲您沒有使用該列表的相同實例。在第一個選項卡中有一個實例,在第二個選項卡中有另一個實例。您需要將這些項目添加到List的同一個實例中。現在,在第一個選項卡中添加項目,並且當您在第二個選項卡中再次單擊時,再次實例化列表,這顯然是空的。

希望它有幫助。

+0

但是...這發生在相同的標籤和不同的按鈕也 – user2718012

+0

你能告訴我如何使用列表的相同實例?我有點新手這一點。另外我曾嘗試使用不同的類列表 – user2718012

+0

當您使用'public ArrayList orderName = new ArrayList <>();'您正在創建一個ArrayList類的對象。所以你需要在同一個對象上添加項目。 –

相關問題