我有一个片段,我正在尝试使用compile 'com.firebaseui:firebase-ui:0.4.2'
中的FirebaseRecyclerAdapter显示ListView。
My Fragment代码如下:
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(并且在logcat中有图像链接从图像链接到的位置),但之后数据从未加载到应用程序中。
我真的很努力让它排序,但似乎没有任何帮助。
答案 0 :(得分:0)
同样的问题发生在我身上。只需删除exefile
。
答案 1 :(得分:0)
有时Recycleview
的大小存在问题
我也遇到了与设置
android:layout_width="match_parent"
android:layout_height="match_parent"
只需将height
和width
设置为match_parent