Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从Firebase检索日期_Android_Firebase_Firebase Realtime Database_Android Recyclerview - Fatal编程技术网

Android 从Firebase检索日期

Android 从Firebase检索日期,android,firebase,firebase-realtime-database,android-recyclerview,Android,Firebase,Firebase Realtime Database,Android Recyclerview,我正在尝试创建一条时间线来表示CardView中添加的所有公告 我遵循本教程中的每一项内容 但是,当我试图从firebase检索数据时,出现了一个异常抛出,现在无法解释为什么以及如何处理它: 我的持有人: package com.volunteer.android.HolderClasses; import android.support.v7.widget.CardView; import android.support.v7.widget.RecyclerView; import and

我正在尝试创建一条时间线来表示CardView中添加的所有公告

我遵循本教程中的每一项内容

但是,当我试图从firebase检索数据时,出现了一个异常抛出,现在无法解释为什么以及如何处理它:

我的持有人:

package com.volunteer.android.HolderClasses;

import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.volunteer.android.R;


public class AnnouncementHolder extends RecyclerView.ViewHolder {



public TextView orgtname ;
public TextView Evenname;
public CardView HomeCard ;
public TextView Start;
public TextView City;
public TextView Field;
public TextView moreinfo;
public TextView contactInfo;
public ImageView pic ;
public ImageView report ;
FirebaseAuth mAuth ;
DatabaseReference reportRef ;




public AnnouncementHolder(View view){

    super(view);

    mAuth=FirebaseAuth.getInstance();
    reportRef= FirebaseDatabase.getInstance().getReference().child("Reports");
    reportRef.keepSynced(true);
    HomeCard=(CardView)view.findViewById(R.id.CardviewHome);
    orgtname = (TextView) view.findViewById(R.id.textViewOragName);
    Evenname = (TextView) view.findViewById(R.id.textViewEventName);
    Start = (TextView) view.findViewById(R.id.TextViewDate);
    City = (TextView) view.findViewById(R.id.TextViewCity);
    Field = (TextView) view.findViewById(R.id.TextViewField);
    moreinfo = (TextView) view.findViewById(R.id.TextViewPost);
    contactInfo = (TextView) view.findViewById(R.id.contact);
    pic =(ImageView)view.findViewById(R.id.ImagproSe);
    report=(ImageView)view.findViewById(R.id.report_btn);


}


public void setPost_key(final String postKey){

    reportRef.addValueEventListener(new com.google.firebase.database.ValueEventListener() {
        @Override
        public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {

            if(dataSnapshot.child(postKey).hasChild(mAuth.getCurrentUser().getUid())){
                report.setImageResource(R.drawable.ic_link);
            }
            else {
                report.setImageResource(R.mipmap.ic_report_black_24dp);
            }


        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });




   }


}
MyAdapter:

   [package com.volunteer.android.adapter;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;

import com.firebase.client.Firebase;
import com.firebase.client.FirebaseError;
import com.google.firebase.auth.FirebaseAuth;
import com.volunteer.android.HolderClasses.AnnouncementHolder;
import com.volunteer.android.R;
import com.volunteer.android.data.Announcement;
import com.volunteer.android.data.Constants;

import java.util.ArrayList;

/**
 * Created by macbookpro on 8/20/16 AD.
 */
public class AnnouncementAdapter  extends RecyclerView.Adapter<AnnouncementHolder> {


    Context c;
    ArrayList<Announcement> Announcements = new ArrayList<>();
    String Uid;
    Firebase announcRef ;
    Firebase reportRef ;
    FirebaseAuth mAuth ;
    // final String AnnKey ;


    private boolean mProccesLike=false ;

    public AnnouncementAdapter(Context c, ArrayList<Announcement> Announcements , String Uid){
        this.c=c;
        this.Announcements=Announcements;
        this.Uid=Uid;
        // expRef=new Firebase(Constants.USER_ECPERIENCE_PATH);
        mAuth=FirebaseAuth.getInstance();
        reportRef=new Firebase(Constants.FIREBASE_URL+"/Reports");

    }


    @Override
    public void onBindViewHolder(AnnouncementHolder holder, int position) {

        final Announcement announcement = Announcements.get(position);


        holder.orgtname.setText((Announcements.get(position)).getOrgName());
        holder.Evenname.setText((Announcements.get(position)).getEventName());
        holder.contactInfo.setText((Announcements.get(position)).getContact());
        holder.Field.setText((Announcements.get(position)).getField());
        holder.Start.setText((Announcements.get(position)).getStartDate());
        holder.moreinfo.setText((Announcements.get(position)).getMoreInfo());
        holder.City.setText((Announcements.get(position)).getCity());

       // holder.setPost_key(announcement.getAnnId());
        holder.report.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                mProccesLike=true ;

                reportRef.addValueEventListener(new com.firebase.client.ValueEventListener() {
                    @Override
                    public void onDataChange(com.firebase.client.DataSnapshot dataSnapshot) {


                        if (mProccesLike){

                            if (dataSnapshot.child(announcement.getAnnId()).hasChild(mAuth.getCurrentUser().getUid())){
                                reportRef.child(announcement.getAnnId()).child(mAuth.getCurrentUser().getUid()).removeValue();

                                mProccesLike=false ;


                            }else {

                                reportRef.child(announcement.getAnnId()).child(mAuth.getCurrentUser().getUid()).setValue("True");
                                mProccesLike=false ;

                            }

                        }}


                    @Override
                    public void onCancelled(FirebaseError firebaseError) {

                    }
                });



            }




        });

    }

    public void animate(RecyclerView.ViewHolder viewHolder) {
        final Animation animAnticipateOvershoot = AnimationUtils.loadAnimation(c, R.anim.anticipateovershoot_interpolator);
        viewHolder.itemView.setAnimation(animAnticipateOvershoot);
    }

    @Override
    public  AnnouncementHolder  onCreateViewHolder (ViewGroup parent, int viewType){
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view_home, parent, false);
        AnnouncementHolder holder =new AnnouncementHolder(v);

        return holder;
    }

    @Override
    public int getItemCount() {

        return Announcements.size();  //mAssignments.size();
    }


    @Override
    public void onAttachedToRecyclerView(RecyclerView recyclerView) {
        super.onAttachedToRecyclerView(recyclerView);
    }

    // Insert a new item to the RecyclerView on a predefined position
    public void insert(Announcement announcement, int position) {
        Announcements.add(position, announcement);
        notifyItemInserted(position);
    }

    // Remove a RecyclerView item containing a specified Data object
    public void remove(Announcement announcement) {
        int position = Announcements.indexOf(announcement);
        Announcements.remove(position);
        notifyItemRemoved(position);
    }

}][1]

请发布您的公告。class文件完成,您认为问题出在哪里?看起来您正在混合Firebase版本。在您的类中,有些firebase引用使用“com.firebase.client.[class]”,有些使用“com.google.firebase.[class]”……我不确定您打算使用哪个版本的firebase,但选择一个并更正引用,然后重新运行我按照您的建议执行,但问题仍然存在!您对“更正您的参考资料,然后重新运行”有何建议?因为我肯定问题出在他们身上!我不知道如何处理演员快照,我分享了我的firebase完整等级。这不是Twitter。Hashtags在标题中没有任何作用。请发布您的公告。class fileDone,您认为问题出在哪里?看起来您正在混合Firebase版本。在您的类中,有些firebase引用使用“com.firebase.client.[class]”,有些使用“com.google.firebase.[class]”……我不确定您打算使用哪个版本的firebase,但选择一个并更正引用,然后重新运行我按照您的建议执行,但问题仍然存在!您对“更正您的参考资料,然后重新运行”有何建议?因为我肯定问题出在他们身上!我不知道如何处理演员快照,我分享了我的firebase完整等级。这不是Twitter。标签在标题中没有任何作用
  public void saveAnnouncement (View view){

    org=editTextOrg.getText().toString().trim();
    if (org.length()>300){

        return;
    }
    Event=editTextEvent.getText().toString().trim();
    if (Event.length()>300){

        return;
    }
    sDate=editTextSd.getText().toString().trim();
    if (sDate.length()>300){

        return;}

    info=editTextInfo.getText().toString().trim();
    if (info.length()>300){

        return;
    }
    contact=editTextContat.getText().toString().trim();
    if (contact.length()>300){

        return;
    }


    if (cityName==null){

        return;
    }
    if (Feild==null){


        return;
    }

    sDate=editTextSd.getText().toString().trim();




    Announcement announcement = new Announcement(Uid,"" ,org, Event, sDate, cityName,Feild , info , contact );



    //Map<String, Object> map = new HashMap<>();
   // map.put("announcement",announcement);

    mRef.child("Announcement").push().setValue(announcement);
    package com.volunteer.android.Fragment;

/**
 * Created by macbookpro on 8/23/16 AD.
 */

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import com.firebase.client.ChildEventListener;
import com.firebase.client.DataSnapshot;
import com.firebase.client.Firebase;
import com.firebase.client.FirebaseError;
import com.google.firebase.auth.FirebaseAuth;
import com.volunteer.android.R;
import com.volunteer.android.adapter.AnnouncementAdapter;
import com.volunteer.android.data.Announcement;
import com.volunteer.android.data.Constants;

import java.util.ArrayList;

/**
 * Created by jnoo1 on 8/11/2016.
 */
public class Home extends Fragment  {

    RecyclerView rv ;
    ArrayList<Announcement> announcements = new ArrayList<>();
    AnnouncementAdapter adapter ;
    Firebase  myRef ;
    FloatingActionButton AddAnouncement ;

    FirebaseAuth mAuth ;
    String Uid ;


    public Home(){}


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {

        View view =inflater.inflate(R.layout.fragment_etailse,container,false);
        Firebase.setAndroidContext(getActivity());
        myRef = new Firebase(Constants.FIREBASE_URL);


        rv =(RecyclerView)view.findViewById(R.id.recyclerViewHome);
        rv.setLayoutManager(new LinearLayoutManager(getActivity()));

        AddAnouncement=(FloatingActionButton) view.findViewById(R.id.fab1);


        mAuth=FirebaseAuth.getInstance();
        Uid=mAuth.getCurrentUser().getUid();
        adapter=new AnnouncementAdapter(getActivity(),announcements,Uid);
        rv.setAdapter(adapter);



        RefreshData();



        return view ;


    }




    public void RefreshData (){
        myRef.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                getUpdates(dataSnapshot);}
            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {
                getUpdates(dataSnapshot);}
            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {
                getUpdates(dataSnapshot);}
            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {}
            @Override
            public void onCancelled(FirebaseError firebaseError) {}
        }); }

    private void getUpdates (DataSnapshot dataSnapshot ){
        announcements.clear();
        for (DataSnapshot Ds : dataSnapshot.getChildren())

        {


            Announcement announcement=new Announcement();

            announcement.setOrgName( Ds.getValue(Announcement.class).getOrgName());
            announcement.setEventName(Ds.getValue(Announcement.class).getEventName());
            announcement.setCity(Ds.getValue(Announcement.class).getCity());
            announcement.setField(Ds.getValue(Announcement.class).getField());
            announcement.setStartDate(Ds.getValue(Announcement.class).getStartDate());
            announcement.setMoreInfo(Ds.getValue(Announcement.class).getMoreInfo());
            announcement.setContact(Ds.getValue(Announcement.class).getContact());
           //  announcement.setAnnId((String) Ds.getKey());


            //exp.setCity((String) dataSnapshot.child("city").getValue());
            announcements.add(announcement);
        }
        if (announcements.size()>0){
            adapter=new AnnouncementAdapter(getActivity(),announcements,Uid);
            rv.setAdapter(adapter); }
        else {
            Toast.makeText(getActivity() ," No thing to show ", Toast.LENGTH_SHORT).show(); } }

}
09-15 17:11:35.622 5862-5884/com.volunteer.android I/DynamiteModule: Considering local module com.google.android.gms.tagmanager:3 and remote module com.google.android.gms.tagmanager:3
 09-15 17:11:35.622 5862-5884/com.volunteer.android I/DynamiteModule: Selected local version of com.google.android.gms.tagmanager
 09-15 17:11:35.648 5862-5884/com.volunteer.android W/GoogleTagManager: Tag Manager's event handler WILL NOT be installed (no container loaded)
 09-15 17:11:35.648 5862-5884/com.volunteer.android I/GoogleTagManager: Tag Manager initilization took 23ms
 09-15 17:11:35.819 5862-5862/com.volunteer.android D/FirebaseCrashApiImpl: throwable com.firebase.client.FirebaseException: Failed to bounce to type
 09-15 17:11:35.849 5862-5862/com.volunteer.android E/AndroidRuntime: FATAL EXCEPTION: main
                                                                 Process: com.volunteer.android, PID: 5862
                                                                 com.firebase.client.FirebaseException: Failed to bounce to type
                                                                     at com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:183)
                                                                     at com.volunteer.android.Fragment.Home.getUpdates(Home.java:107)
                                                                     at com.volunteer.android.Fragment.Home.access$000(Home.java:32)
                                                                     at com.volunteer.android.Fragment.Home$1.onChildAdded(Home.java:85)
                                                                     at com.firebase.client.core.ChildEventRegistration.fireEvent(ChildEventRegistration.java:48)
                                                                     at com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45)
                                                                     at com.firebase.client.core.view.EventRaiser$1.run(EventRaiser.java:38)
                                                                     at android.os.Handler.handleCallback(Handler.java:739)
                                                                     at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                     at android.os.Looper.loop(Looper.java:135)
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5254)
                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                     at java.lang.reflect.Method.invoke(Method.java:372)
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
                                                                  Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "UserInformation" (class com.volunteer.android.data.Announcement), not marked as ignorable (11 known properties: , "contact", "moreInfo", "eventName", "city", "orgName", "startDate", "uid", "field", "annId", "picture", "key"])
                                                                     at [Source: java.io.StringReader@1a04a2ef; line: 1, column: 21] (through reference chain: com.volunteer.android.data.Announcement["UserInformation"])
                                                                     at com.fasterxml.jackson.databind.DeserializationContext.reportUnknownProperty(DeserializationContext.java:555)
                                                                     at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:708)
                                                                     at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1160)
                                                                     at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:315)
                                                                     at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121)
                                                                     at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2888)
                                                                     at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2034)
                                                                     at com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:181)
                                                                     at com.volunteer.android.Fragment.Home.getUpdates(Home.java:107) 
                                                                     at com.volunteer.android.Fragment.Home.access$000(Home.java:32) 
                                                                     at com.volunteer.android.Fragment.Home$1.onChildAdded(Home.java:85) 
                                                                     at com.firebase.client.core.ChildEventRegistration.fireEvent(ChildEventRegistration.java:48) 
                                                                     at com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45) 
                                                                     at com.firebase.client.core.view.EventRaiser$1.run(EventRaiser.java:38) 
                                                                     at android.os.Handler.handleCallback(Handler.java:739) 
                                                                     at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                     at android.os.Looper.loop(Looper.java:135) 
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                                     at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
 09-15 17:11:36.234 5993-5993/com.volunteer.android:background_crash W/DynamiteModule: Local module descriptor class for com.google.android.gms.crash not found.
package com.volunteer.android.data;

 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.google.firebase.database.Exclude;

 /**
 * Created by macbookpro on 8/10/16 AD.
 */
 public class Announcement {

@JsonIgnore
private String Key ;

private String OrgName;
private String EventName;
private String StartDate;
private String City;
private String Field;
private String MoreInfo;
private String Contact;
private String Picture;
private String Uid;
private String AnnId ;


public Announcement (){

    // defualt ;
}

public Announcement (String Uid, String AnnId ,String OrgName,String EventName,String StartDate,String City,String Field, String MoreInfo, String Contact){

    this.Uid=Uid;
    this.AnnId=AnnId;
    this.OrgName=OrgName;
    this.EventName=EventName;
    this.StartDate=StartDate;
    this.City=City;
    this.Field=Field;
    this.MoreInfo=MoreInfo;
    this.Contact=Contact;

}



public void setAnnId (String AnnId){this.AnnId=AnnId;}
public String getAnnId (){return AnnId;}

public void setKey(String Key){
    Key=Key;
}

@Exclude
public String getKey(){
    return Key;
}

public void setUid (String Uid){this.Uid=Uid;}
public String getUid (){return Uid ; }

public void setOrgName(String orgName){
    OrgName=orgName;
}
public String getOrgName(){
    return OrgName;
}

public void setEventName(String EName){
    EventName=EName;
}
public String getEventName(){
    return EventName;
}

public void setStartDate(String Date){
    StartDate= Date;
}
public String getStartDate(){
    return StartDate;
}



public void setCity(String c){
    City=c;
}
public String getCity(){
    return City;
}

public void setField(String f){
    Field=f;
}
public String getField(){
    return Field;
}

public void setMoreInfo(String m){
    MoreInfo=m;
}
public String getMoreInfo(){
    return MoreInfo;
}

public void setContact(String Contact){
    this.Contact=Contact;
}
public String getContact(){
    return Contact;
}

public void setPicture(String p){
    Picture=p;
}
   public String getPicture(){
       return Picture;
   }




}