2017-02-14 56 views
0

我正在使用recyclerView在時間顯示兩個圖像。一旦用戶點擊其中一個,就應該從Firebase數據庫中移除這兩者。事實是...當活動開始時,我可以同時獲得兩個圖像鍵。Java - 如何同時握住兩個鍵?

但是,一旦用戶點擊,我只能刪除被點擊的圖像,如預期的那樣。如何在點擊後按住兩個圖像鍵?

protected void populateViewHolder(final ImagesHolder viewHolder, final Images model, int position) { 


     final String image_key = getRef(position).getKey(); 
     Toast.makeText(TesteActivity.this, foto_key, Toast.LENGTH_SHORT).show(); // Here I can get both keys! 

viewHolder.mView.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       mDatabaseTeste = FirebaseDatabase.getInstance().getReference().child("imagesForUsers").child(mAuth.getCurrentUser().getUid()).child(image_key);// 
       mDatabaseTeste.removeValue(); 

    } 
} 
+0

這的確是一個火力點的問題,還是? – ControlAltDel

回答

0

您可以映射鍵。 你說過在你的活動中你有兩把鑰匙。

因此,創建一個地圖這樣

Map<String, String> keysMap = new HashMap<String, String>(); 

然後,每對夫婦鍵(鍵1,鍵2在這種情況下),你把它們放到地圖上。

keysMap.put(key1, key2); 
keysMap.put(key2, key1); 

然後在您的populateViewHolder(...)方法,改變的onClick監聽器的代碼如下:

mDatabaseTeste = FirebaseDatabase.getInstance().getReference().child("imagesForUsers").child(mAuth.getCurrentUser().getUid()).child(image_key);// 
mDatabaseTeste.removeValue(); 

if(keysMap.containsKey(image_key)) { 
    //Gets the key associated to the image_key 
    String relatedKey = keysMap.get(image_key); 
    mDatabaseTeste = FirebaseDatabase.getInstance().getReference().child("imagesForUsers").child(mAuth.getCurrentUser().getUid()).child(relatedKey);// 
    mDatabaseTeste.removeValue(); 
} 
+0

我有兩個鍵,但在同一個字符串中。當我使用toast命令時,它顯示一個,然後顯示另一個圖像鍵。我試圖分成不同的字符串,但我不能。所以我認爲我不能使用地圖。我對嗎? –

+0

例如你有一個這樣的字符串「key1:key2」?如果是這種情況,可以使用split方法分隔這兩個鍵。 String [] keys = new String(「key1:key2」)。split(「:」);你可以發佈包含密鑰的字符串嗎?所以我們可以看到可以做什麼 – Flood2d

+0

當我使用這個「String image_key = getRef(position).getKey();」時,我無法識別它生成的字符串的類型。我試圖分裂使用,但它沒有工作。 「String [] parts = image_key.split(」:「); String part1 = parts [0]; String part2 = parts [1];」它說索引1不存在,當我爲索引0烤麪包時,兩個鍵都會出現。 –