2017-02-14 6 views
0

私はrecyclerViewを使用して2つの画像を表示しています。ユーザーがそれらのいずれかをクリックすると、Firebaseデータベースから両方を削除する必要があります。事実は...アクティビティが開始されると、両方のイメージキーを取得できます。 Java - 同時に2つのキーを保持するにはどうすればいいですか?

しかし、ユーザーがクリックしたら、私は予想通り、クリックされた画像を削除することができます。クリック後に両方のイメージキーを保持するにはどうすればよいですか?

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

これは本当にfirebase問題である、または:

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

は、その後、あなたのpopulateViewHolder(...)方法では、これまでのonClickリスナーコードを変更しますか? – ControlAltDel

答えて

0

キーをマップできます。 あなたの活動では、両方のキーがあると言いました。

だから、あなたがマップに入れて(この場合はKEY1、KEY2)各キーのカップルのために続いて、この

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

のような地図を作成します。

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

私は両方のキーを持っていますが、同じ文字列です。トーストコマンドを使用すると、1つのイメージキーと1つのイメージキーが表示されます。私は別の文字列に分離しようとしましたが、できませんでした。だから、私はこれのために地図を使うことはできないと思う。私は正しい? –

+0

たとえば、 "key1:key2"のような文字列がありますか?その場合、splitメソッドを使用して2つのキーを分けることができます。 String [] keys = new String( "key1:key2")。split( ":");キーを含む文字列を投稿できますか? 「= getRef(位置).getKey()文字列のimage_key;」私たちは、私がこれを使用する場合、私はそれが生成されますことを、文字列の種類を認識できなかった – Flood2d

+0

を行うことができるかを見ることができます。私は使って分割しようとしましたが、うまくいきませんでした。 "文字列[]部分= image_key.split(": "); 文字列その1 =部分[0]; 文字列その2 =部分[1];"インデックス1は存在しないと言います。インデックス0をトーストすると、両方のキーが表示されます。 –

関連する問題