2016-12-19 10 views
3

私はこれについていくつかの調査を行いましたが、この問題を解決することができず、すべてのオンラインソリューションが私に新しいエラーをもたらしました。リサイクラビューのデータがFirebaseにアップロードされていません

私は現在、イベントアプリを開発中で、Androidスタジオは比較的新しいです。

私は主催者がFirebaseにアップロードしたすべてのイベントデータを確認する管理アプリケーションにRecyclerViewを持っています。主催者は、event_tile、event_desc、event_imageなどのデータをアップロードします。これはFirebaseのroot "Event"の下に保存されます。その後、管理アプリケーションはリサイクラビューの形式でこれらの要求を受け取り、それらを承認するボタンを持っています。承認されたすべてのイベントは、ルート "Approved_Events"を持つFirebaseの別のテーブルに保存されます。

承認部分にこだわりがあります。コードはエラーなく正常に実行されていますが、Firebaseコンソールにデータがアップロードされていません。ここで

は私の主な活動

 public class MainActivity extends AppCompatActivity { 

     private RecyclerView request_eventList; 
     private DatabaseReference mRef, aRef; 
     private Button verify_button; 
     private TextView request_title, request_desc; 
     private ImageView request_image; 
     ProgressDialog progressDialog; 


     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      progressDialog = new ProgressDialog(this); 
      mRef = FirebaseDatabase.getInstance().getReference().child("Event"); 
      setContentView(R.layout.activity_main); 
      request_eventList = (RecyclerView) findViewById(R.id.request_eventList); 
      request_eventList.setHasFixedSize(true); 
      request_eventList.setLayoutManager(new LinearLayoutManager(this)); 


     } 

     @Override 
     protected void onStart() { 
      super.onStart(); 

      FirebaseRecyclerAdapter<Event, RequestViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Event, RequestViewHolder>(
        Event.class, 
        R.layout.admin_event_row, 
        RequestViewHolder.class, 
        mRef 

      ) { 
       @Override 
       protected void populateViewHolder(RequestViewHolder viewHolder, Event model, int position) { 
        viewHolder.setTitle(model.getTitle()); 
        viewHolder.setDesc(model.getDesc()); 
        viewHolder.setImage(getApplicationContext(), model.getImage()); 
       } 
      }; 
      request_eventList.setAdapter(firebaseRecyclerAdapter); 

     } 

     public static class RequestViewHolder extends RecyclerView.ViewHolder { 
      View mView; 
      public Button verify_button; 
      DatabaseReference mRef, aRef; 
      ProgressDialog progressDialog; 

      public RequestViewHolder(View itemView) { 
       super(itemView); 
       mView = itemView; 


       progressDialog = new ProgressDialog(mView.getContext()); 
       verify_button = (Button) mView.findViewById(R.id.approve_button); 
       mRef = FirebaseDatabase.getInstance().getReference().child("Event"); 
       aRef = FirebaseDatabase.getInstance().getReference().child("ApprovedEvents"); 

       verify_button.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) {mRef.addValueEventListener(new ValueEventListener() { 
         @Override 
         public void onDataChange(DataSnapshot dataSnapshot) { 
          Map <String, String> map = (Map<String, String>) dataSnapshot.getValue(); 

          String title_val = map.get("title"); 
          String desc_val = map.get("desc"); 
          String image_val = map.get("image"); 

          aRef.child("approved_title").setValue(title_val); 
          aRef.child("approved_desc").setValue(desc_val); 
          aRef.child("approved_image").setValue(image_val); 
          progressDialog.dismiss(); 
         } 

         @Override 
         public void onCancelled(DatabaseError databaseError) { 

         } 
        }); 


        } 
       }); 

      } 

      public void setTitle(String title) { 
       TextView request_title = (TextView) mView.findViewById(R.id.request_title); 
       request_title.setText(title); 


      } 

      public void setDesc(String desc) { 
       TextView request_desc = (TextView) mView.findViewById(R.id.request_desc); 
       request_desc.setText(desc); 
      } 

      public void setImage(Context ctx, String image) { 
       ImageView request_image = (ImageView) mView.findViewById(R.id.request_image); 
       Picasso.with(ctx).load(image).into(request_image); 
      } 

     } 
    } 

MainActivity XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.admin.admin.MainActivity"> 

    <android.support.v7.widget.RecyclerView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/request_eventList" 
     android:clickable="true"> 
    </android.support.v7.widget.RecyclerView> 

</RelativeLayout> 

イベントJavaクラス

public class Event { 
     private String title, desc, image; 

     public Event(String title, String desc, String image) { 
      this.title = title; 
      this.desc = desc; 
      this.image = image; 
     } 
     public Event(){ 

     } 

     public String getTitle() { 
      return title; 
     } 

     public void setTitle(String title) { 
      this.title = title; 
     } 

     public String getDesc() { 
      return desc; 
     } 

     public void setDesc(String desc) { 
      this.desc = desc; 
     } 

     public String getImage() { 
      return image; 
     } 

     public void setImage(String image) { 
      this.image = image; 
     } 
    } 

recyclerView

を記入しますadmin_event_rowのXMLファイルです

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 
<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/request_image" 
    android:src="@drawable/abc_btn_check_material" 
    android:adjustViewBounds="true" /> 
<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/request_title" 
    android:text="Title will come here " 
    android:padding="10dp" 
    android:textStyle="bold" 
    android:textSize="15dp" /> 
<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/request_desc" 
    android:text="Desc will come here " 
    android:paddingLeft="10dp" 
    android:paddingRight="10dp" 
    android:paddingBottom="10dp" /> 
<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/approve_button" 
    android:text="Yeah it's Cool "/> 
</LinearLayout> 

Final App Look

+0

ボタンの 'onClick'メソッドの下にシステムプリントを配置しようとしましたか? – Wilik

+0

ボタンのクリックは、私が見た限り適切に処理されます。 'onClick'メソッド呼び出しを呼び出すかどうか調べるために、いくつかのトーストを入れてみてください。 –

+0

ええトーストで試したところ、ボタンは上手く見えます。私はエラーが以前に来ていたと思います。しかし、データがFirebase –

答えて

1

あなたのイベントは、より多くの未承認の子供を持っている場合は、-populateViewHolderをアダプタにホルダーからverify_button.setOnClickListenerを移動します。あなたは、recycleviewer内の行にverify_button.setOnClickListenerを接続して、clickedアイテムからtitle、desc、およびimageの値を取得する必要があります。

protected void populateViewHolder(RequestViewHolder viewHolder, Event model, int position) { 
       viewHolder.setTitle(model.getTitle()); 
       viewHolder.setDesc(model.getDesc()); 
       viewHolder.setImage(getApplicationContext(), model.getImage()); 

      final String title = model.getTitle(); 
      final String desc = model.getDesc(); 
      final String image = model.getImage(); 

      final DatabaseReference aRef = FirebaseDatabase.getInstance().getReference(); 

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

       @Override 
       public void onClick(View arg0) { 

        String key = aRef.child("ApprovedEvents").push().getKey(); 

        Event event = new Event(title, desc, image); 

        Map<String, Object> eventValues = event.toMap(); 

        Map<String, Object> childUpdates = new HashMap<>(); 

        childUpdates.put("/ApprovedEvents/" + key, eventValues); 

        aRef.updateChildren(childUpdates); 


       } 
      }); 


     } 
    }; 
+0

にアップロードされていませんあなたのコードを実装しましたが、ボタンは機能していますが、データはデータベースにアップロードされていません。 –

+0

火災基地データに名前の子供が1人しか表示されていない - 「イベント」 –

+0

ごめんなさい。子供は1人またはそれ以上の子供を持っていますか?あなたのリサイクルビューアで一度も未承認のイベントがありますか? – eurosecom

関連する問題