2017-12-12 3 views
0

通常のアクティビティで画像とテキストの両方を表示しようとしました。 フラグメントのみのイメージが表示されていますが、テキストは表示されません(通常とフラグメントの両方のアクティビティで同じxmlレイアウトを使用しています)。私はgridviewのfirebaselistadpterを使用しています。私はまた、リストビューで断片的な静止画像でそれを使用しようとしましたが、しか表示されず、テキストは表示されません。(エラーメッセージはありません)。 Firebase ui 3.1.0(Firebaselistadapter)クラスにmc_nameのセッター/フィールドが見つかりません

の1-

私のJavaアクティビティ:

public class R_MainCat extends Fragment { 

    private GridView gridView; 
    private DatabaseReference myRef; 
    private FirebaseListAdapter<Sub_Category_Data> adapter; 
    private TextView mc_name; 
    private ImageView url; 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.activity_gridview, container, false); 

     rootView.setBackgroundColor(Color.WHITE); 

     myRef= FirebaseDatabase.getInstance().getReference("Main_Category"); 
     Firebase.getDefaultConfig().setPersistenceEnabled(true); 
     gridView = (GridView) rootView.findViewById(R.id.gridview); 


    FirebaseListOptions<Sub_Category_Data> options = new FirebaseListOptions.Builder<Sub_Category_Data>() 
       .setQuery(myRef, Sub_Category_Data.class).setLayout(R.layout.gridview_icon).build(); 

     adapter = new FirebaseListAdapter<Sub_Category_Data>(options) { 

      @Override 
      protected void populateView(View v, Sub_Category_Data model, int position) { 
       mc_name = v.findViewById(R.id.cat_name); 
       url = v.findViewById(R.id.img); 
       mc_name.setText(model.getName()); 
       Picasso.with(getActivity()).load(model.getUrl()).into(url); 
      } 
     }; 
     gridView.setAdapter(adapter); 


     gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int i, long id) { 
       switch(i) 
       { 
        case 0: 
         R_DairyProds f1 = new R_DairyProds(); 
         FragmentTransaction fragTransaction1 = getFragmentManager().beginTransaction(); 
         fragTransaction1.replace(R.id.container_view,f1); 
         fragTransaction1.addToBackStack(null); 
         fragTransaction1.commit(); 
         break; 
        case 1: 
         R_Bakery f2 = new R_Bakery(); 
         FragmentTransaction fragTransaction2 = getFragmentManager().beginTransaction(); 
         fragTransaction2.replace(R.id.container_view,f2); 
         fragTransaction2.addToBackStack(null); 
         fragTransaction2.commit(); 
         break; 
        case 2: 
         R_Grocery f3 = new R_Grocery(); 
         FragmentTransaction fT3 = getFragmentManager().beginTransaction(); 
         fT3.replace(R.id.container_view,f3); 
         fT3.addToBackStack(null); 
         fT3.commit(); 
         break; 
        case 3: 
         R_FruitsNVegs f4 = new R_FruitsNVegs(); 
         FragmentTransaction fT4 = getFragmentManager().beginTransaction(); 
         fT4.replace(R.id.container_view,f4); 
         fT4.addToBackStack(null); 
         fT4.commit(); 
         break; 
        case 4: 
         R_CleanNWash f5 = new R_CleanNWash(); 
         FragmentTransaction fT5 = getFragmentManager().beginTransaction(); 
         fT5.replace(R.id.container_view,f5); 
         fT5.addToBackStack(null); 
         fT5.commit(); 
         break; 
       } 
      } 
     }); 
     return rootView; 

    } 
    @Override 
    public void onStart() { 
     super.onStart(); 
     adapter.startListening(); 
    } 

    @Override 
    public void onStop() { 
     super.onStop(); 
     adapter.stopListening(); 
    } 
} 

2 - 私のxmlレイアウト:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.v7.widget.CardView 
     xmlns:card_view="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/card_view" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     card_view:cardUseCompatPadding="true" 
     card_view:cardCornerRadius="4dp"> 
     <RelativeLayout 
      android:descendantFocusability="blocksDescendants" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
      <ImageView 
       android:id="@+id/img" 
       android:layout_width="200dp" 
       android:layout_height="200dp" 
       android:layout_alignParentTop="true" 
       android:layout_centerHorizontal="true"/> 
      <me.grantland.widget.AutofitLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_below="@+id/img" 
       > 
      <TextView 
       android:id="@+id/cat_name" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:text="hello_world" 
       android:textColor="#000" 
       android:textSize="20sp" 
       android:gravity="center" 
       /> 
      </me.grantland.widget.AutofitLayout> 
     </RelativeLayout> 
    </android.support.v7.widget.CardView> 
</LinearLayout> 

3 - 私のデータモデルのjava:出力の

public class Sub_Category_Data { 

    private String mc_name; 
    private String url; 

    public Sub_Category_Data() { 
    } 

public void setName(String mc_name) { 
     this.mc_name = mc_name; 
    } 
    public String getName() { 
     return mc_name; 
    } 

    public void setUrl(String url) { 
     this.url = url; 
    } 

    public String getUrl() { 
     return url; 
    } 
} 

、4-スナップショット: テキストが画像の下に表示されているとします。 Database Image

は、誰もがいずれかを持っているん:

Output in fragment

は、私は私のフラグメントが

Output I've tested in normal Activity

5データベーススナップショットは、この画像に表示されているものと同じテキストデータを表示したいです手掛かり?以前にこの問題に直面したことがありますか?なぜなら、通常のアクティビティでは正常に動作しますが、テキストはフラグメントに表示されていないという事実以外にエラーが表示されないので、私は失われてしまいます。前もって感謝します。以上見た後に

答えて

0

と私の上に私は問題を修正しました「クラスで見つけmc_name用ませセッター/フィールド」logcat

これを気づいていません。それはモデルクラスのgetName()SetNameメソッド()あなたは上記の質問にデータベースの絵を見ることができます I は私firebaseに子キー名と同じ名前にそれらを変更し方法にありました。新しいメソッドはgetMc_name()とsetMc_name()です。

public class Sub_Category_Data { 

    private String mc_name; 
    private String url; 

    public Sub_Category_Data() { 
    } 

    public String getMc_name() { 
     return mc_name; 
    } 

    public void setMc_name(String mc_name) { 
     this.mc_name = mc_name; 
    } 

    public String getUrl() { 
     return url; 
    } 

    public void setUrl(String url) { 
     this.url = url; 
    } 
} 

出力screen shot

関連する問題