1

私は、compile 'com.firebaseui:firebase-ui:0.4.2'に入っているFirebaseRecyclerAdapterを使用してListViewを表示しようとしています。FirebaseRecyclerAdapterはフラグメント内にデータを表示しません

マイフラグメントのコードはこのように書き:

public class HomeFragment extends Fragment { 

    private RecyclerView services_list; 
    private DatabaseReference mDatabase; 


    public HomeFragment() { 
     // Required empty public constructor 
    } 

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

     View view = inflater.inflate(R.layout.fragment_home, container, false); 
     // Inflate the layout for this fragment 
     return view; 
    } 

    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 

     mDatabase = FirebaseDatabase.getInstance().getReference().child("AllServices"); 
     mDatabase.keepSynced(true); 

     services_list = (RecyclerView) view.findViewById(R.id.services_list); 
     services_list.setHasFixedSize(true); 
     services_list.setLayoutManager(new LinearLayoutManager(getContext())); 


    } 

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

     FirebaseRecyclerAdapter<Services, ServiceViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Services, ServiceViewHolder>(
       Services.class, 
       R.layout.service_row, 
       ServiceViewHolder.class, 
       mDatabase 
     ) { 
      @Override 
      protected void populateViewHolder(ServiceViewHolder viewHolder, Services model, final int position) { 

       viewHolder.setServiceName(model.getName()); 
       viewHolder.setServicePrice(model.getPrice()); 
       viewHolder.setImage(getContext(), model.getImageUrl()); 

       viewHolder.service_name_textview.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         Toast.makeText(getContext(), "Clicked on Service Name "+(position+1), Toast.LENGTH_SHORT).show(); 
        } 
       }); 

       viewHolder.service_price_text_view.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         Toast.makeText(getContext(), "Clicked on Service Price "+(position+1), Toast.LENGTH_SHORT).show(); 
        } 
       }); 

       viewHolder.service_image.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         Toast.makeText(getContext(), "Clicked on Service Image "+(position+1), Toast.LENGTH_SHORT).show(); 
        } 
       }); 

      } 
     }; 

     services_list.setAdapter(firebaseRecyclerAdapter); 


    } 

    public static class ServiceViewHolder extends RecyclerView.ViewHolder 
    { 

     View mView; 
     TextView service_name_textview; 
     TextView service_price_text_view; 
     ImageView service_image; 

     public ServiceViewHolder(View itemView) { 
      super(itemView); 

      mView = itemView; 
     } 

     public void setServiceName(String title) 
     { 
      service_name_textview = (TextView) mView.findViewById(R.id.service_name_textview); 
      service_name_textview.setText(title); 
     } 

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

     public void setImage(final Context ctx, final String image) 
     { 
      service_image = (ImageView) mView.findViewById(R.id.service_image); 

      //Picasso.with(ctx).load(image).into(post_image); 

      Picasso.with(ctx).load(image).networkPolicy(NetworkPolicy.OFFLINE).into(service_image, new Callback() { 
       @Override 
       public void onSuccess() { 

       } 

       @Override 
       public void onError() { 
        Picasso.with(ctx).load(image).into(service_image); 
       } 
      }); 
     } 


    } 
} 

マイServices.javaコードはこのように書きます:

public class Services { 

    private String Name; 
    private String ImageUrl; 
    private String Price; 

    public Services() { 
    } 

    public Services(String name, String imageUrl, String price) { 
     Name = name; 
     ImageUrl = imageUrl; 
     Price = price; 
    } 

    public String getName() { 
     return Name; 
    } 

    public void setName(String name) { 
     Name = name; 
    } 

    public String getImageUrl() { 
     return ImageUrl; 
    } 

    public void setImageUrl(String imageUrl) { 
     ImageUrl = imageUrl; 
    } 

    public String getPrice() { 
     return Price; 
    } 

    public void setPrice(String price) { 
     Price = price; 
    } 
} 

RecyclerViewに表示される21行があります。

注:初めてアプリをインストールしたときに、データがrecyclerviewに読み込まれ(ログカットに画像がダウンロードされた場所からの画像リンクがありました)、その後にデータはアプリにロードされません。

私は本当にそれを並べ替えるのは難しいと思っていますが、何も助けてくれないようです。

答えて

0

同じ問題が発生しました。 service_list.setHasFixedSize(true)を削除するだけです。

関連する問題