2017-07-09 4 views
1

私はいくつかのプロジェクトで取り組んでいます。お気に入りのアイコンをカードビューに設定したいので、別のアクティビティにcardviewの詳細を表示したいと思います。私は、fireviewを使用して、cardviewをrecyclerviewで設定しました。お気に入りのカードビュー(firebase付き)

私はアンドロイドで初心者です。だから私はこの部分を解決するためにいくつかの助けが必要です。

お気に入りのアイコンをクリックしてcardviewの詳細を別のリサイクルビューに設定すると、カードビューの詳細をどのように取得できますか?!?!?!?!

は、ここでコードviewHolder.mStarBtn.setOnClickListener(新しいView.OnClickListener(){ @Override公共ボイドのonClick(最終的なビュービュー){

mProccessStar = true; 



     mDatabaseStar.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 




       if (mProccessStar) { 

        if (dataSnapshot.child(post_key1).hasChild(mAuth1.getCurrentUser().getUid())) { 

         mDatabaseStar.child(post_key1).child(mAuth1.getCurrentUser().getUid()).removeValue(); 
         mProccessStar = false; 


        } else { 

         mDatabaseStar.child(post_key1).child(mAuth1.getCurrentUser().getUid()).setValue(post_key1); 




         mProccessStar = false; 

        } 
       } 

      } 
      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 
    } 

を})を入力します。

私はこの文字列をすべてコピーして別のrecyclerviewに表示したいのですが、今ではこの文字列をcardviewでrecyclerviewに設定しています。私は、キーを取得またはid.iはタイトルとDESCのatringや画像の文字列の文字列を取得したい取得したいいけない

enter code here 

KPhBVHz4cmukSY ...

DESC: "کیفدستدوز"

画像: 「https://firebasestorage.google ...

タイトル: "کیفدستدوز"

答えて

0
DatabaseReference newPost = mDatabaseStar.push(); 
           newPost.child("title").setValue(model.getTitle()); 
           newPost.child("desc").setValue(model.getDesc()); 

mDatabaseStar.child(post_key1).child(mAuth1.getCurrentUser()GETUID())のsetValue(newPost)。

0

populateViewHolderで各CardViewを使用して作業を行うことができます。この例では:テキストはgetRef(I).getKey()でVNAMEとvMessage

2用(のsetText))に設定されて

1)あなたはカードに表示されるデータの親キーを取得することができます。

3)OnClickListenerは、ここではCardView、またはこの場合はCardViewでも設定できます。注意すべき

mRecyclerAdapter = 
      new FirebaseRecyclerAdapter<DataModel, ViewHolder>(
        DataModel.class, 
        R.layout.item_list, 
        ViewHolder.class, 
        mDatabaseRef 
      ) { 
       @Override 
       protected void populateViewHolder(final ViewHolder viewHolder, final DataModel student, int i) { 
        viewHolder.vName.setText(student.getName()); 
        viewHolder.vMessage.setText(student.getMessage()); 

        String itemId = getRef(i).getKey(); 


        viewHolder.vCard.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(final View v) { 
          aMethodThatDoesSomething(); 

         } 
        }); 
        DatabaseReference mFavourite= mRef.child("shortlisted_tutors").child(currentUID1).child(otherUserUID); 
         mFavourite.addValueEventListener(new ValueEventListener() { 
          @Override 
          public void onDataChange(DataSnapshot dataSnapshot){ 
           if (dataSnapshot.exists()) { 
            viewHolder.favoriteImageButton.setImageResource(R.mipmap.ic_bookmarkchecked); 

           } 
           else { 
       viewHolder.favoriteImageButton.setImageResource(R.mipmap.ic_shortlistbookmark); 

           } 
          } 

        } 
       }; 

     mRecyclerView.setAdapter(mRecyclerAdapter); 
     mRecyclerView.setLayoutManager(manager); 

3つのことは: 1)あなたはViewHolderクラスの各ビュー(のTextView、ImageViewのとなど)を定義する必要があります。 2)addValueEventListenerの中から好きなImageViewの/のImageButtonを変更できるようにあなたがでfinalとしてViewHolderを宣言する必要がありますpopulateViewHolderは 3)dataSnapshot.exists(あればここで私はちょうど使用)しかし、あなたは可能性も値を要求し、それに基づいて値を変更します。ただし、dataSnapshot.exists()は、ほとんどの場合、迅速かつ効率的です。ノードをコピーするには

+0

はい。私はpopulateViewholderを使用しますが、私は彼のお気に入りのbuttomが別のアクティビティにクリックされた各カードビューのデータを設定する必要があります。 mDatabaseStar.addValueEventListener(新しいValueEventListener(){ @Override公共ボイドOnDataChangeの(DataSnapshot dataSnapshot){ (mProccessStar){ IF(dataSnapshot.child(post_key1).hashChild(mAuth1.getCurrentUser(IF ).GetUid())){ mDatabaseStar.Child(post_key1).Child(mAuth1.getCurrentUser().getUid())たremoveValue(); mProccessStar = FALSE; }他{ mDatabaseStar.child(post_key1 ).child(mAuth1.getCurrentUser()。getUid())。setValue(); ... – user5199809

+0

私の回答を編集しました。まだ質問がある場合はお知らせください – CacheMeOutside

+0

私のコードにこの部分があります。 これは私の問題ではない お気に入りのbtnをクリックすると、titleとdescのsrcを取得し、cardviewのイメージを取得し、それをWebデータベースの新しい文字列に置き、別のアクティビティで呼び出したいと思います。 この質問はクリアなのですか? – user5199809

0

は、次の操作を行います。

mRefToCopy = mRef.child("original_data"); 
    HashMap<String, Object> hashMapContainingCopy = new HashMaTp<>(); 
    mSubmittedTutorFeedback.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      hashMapContainingCopy = (HashMap<String, Object>) dataSnapshot.getValue(); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

次に、新しい場所にコピーします。

mNewLocation.setValue(hashMapContainingCopy, new DatabaseReference.CompletionListener() { 
         @Override 
         public void onComplete(DatabaseError databaseError, DatabaseReference reference) { 
          if (databaseError != null) { 
           Log.e("tutor feedback write", "Failed to write message", databaseError.toException()); 
          } 
          else { 
           mRefToCopy.removeValue(new DatabaseReference.CompletionListener() { 
            @Override 
            public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) { 
            } 

あなたはコピーが正常に起こった場合は、元のを削除したい場合は、最後の部分です。これがあなたが探していたものならば、この答えを正しいものとしてマークしてください。

+0

いいえ、うまくいきません。 – user5199809

+0

おそらくHashMap hashMapContainingCopyを私的変数 – CacheMeOutside

関連する問題