2017-11-10 9 views
0

各カテゴリの名前とイメージを画面に読み込むことができません。私はそれらをロードする異なる方法を試みたが運がない。データベースとしてFirebaseを使用して画面にカテゴリのイメージと名前をロードできません

私は、カテゴリを表示するためにフラグメントを使用しています。

エミュレータでイメージと名前をロードするさまざまな方法を使用する場合でも、私は同じエラーメッセージimage1を実行しています。

データベース構造は次のようになります。DBサンプルimage2

これは私が自分の画像/

1.

categories = FirebaseDatabase.getInstance().getReferenceFromUrl("https://quizmate-5be87.firebaseio.com/").child("Category"); 

wのカテゴリを表示するには、これらの次の方法を使用していたCategoryFragment.javaファイル

public class CategoryFragment extends Fragment { 

View myFragment; 

RecyclerView categoryList; 
RecyclerView.LayoutManager layoutManager; 
FirebaseRecyclerAdapter<Category, CategoryViewHolder> adapter; 

// Firebase Tings 
FirebaseDatabase database; 
DatabaseReference categories; 

public static CategoryFragment newInstance() { 
    CategoryFragment categoryFragment = new CategoryFragment(); 
    return categoryFragment; 
} 

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


    database = FirebaseDatabase.getInstance(); 
    categories = database.getReference().child("Category"); 

} 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    myFragment = inflater.inflate(R.layout.fragment_category, container, false); 
    categoryList = (RecyclerView) myFragment.findViewById(R.id.categoryList); 
    categoryList.setHasFixedSize(true); 
    layoutManager = new LinearLayoutManager(container.getContext()); 
    categoryList.setLayoutManager(layoutManager); 

    loadCategories(); 

    return myFragment; 
} 

private void loadCategories() { 
    adapter = new FirebaseRecyclerAdapter<Category, CategoryViewHolder>(
      Category.class, 
      R.layout.category_item, 
      CategoryViewHolder.class, 
      categories 
    ) { 
     @Override 
     protected void populateViewHolder(CategoryViewHolder viewHolder, final Category model, int position) { 
      viewHolder.tvCategoryName.setText(model.getName()); 
      Picasso.with(getActivity()) 
        .load(model.getImage()) 
        .into(viewHolder.ivCategoryImage); 

      viewHolder.setItemClickListener(new ItemClickListener() { 
       @Override 
       public void onClick(View view, int position, boolean isLongClick) { 
        Toast.makeText(getActivity(), String.format("%s | %s", adapter.getRef(position).getKey(), model.getName()), Toast.LENGTH_SHORT).show(); 
       } 
      }); 
     } 
    }; 
    adapter.notifyDataSetChanged(); 
    categoryList.setAdapter(adapter); 
} 
} 

です2.第三の方法は、既に使用されている

database = FirebaseDatabase.getInstance(); 
categories = database.getReference().child("Category"); 
categories = FirebaseDatabase.getInstance().getReference().child("Category"); 

Category.java - モデルクラスが

public class Category { 

private String name, image; 

public Category() { 
} 

public Category(String name, String image) { 
    this.name = name; 
    this.image = image; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getImage() { 
    return image; 
} 

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

これはときに表示されているものです私はimage3を実行します。

ご協力いただきましてありがとうございます。

答えて

0

Firebase JSONの名前と画像フィールドは、大文字(名前、画像)で始まります。 getImage()はimageではなくImageと呼ばれるプロパティに対応します。 これを修正する方法の1つは、変数に大文字と小文字を一致させることです(Firebase)。

+0

ありがとう、仲間 – hhh

関連する問題