2016-06-17 9 views
0

フラグメントのファンクションがあります。(Frag_Lista)は、クエリの出力を使用してcardViewを動的に変更します。 私はその断片から最初に呼び出すと、それは動作します。私はmain activityからそれを呼び出す2回目ですが、私は正しく2番目のパラメータ、viewを設定することはできません。ビューを必要とする主なアクティビティからフラグメントに定義された関数を呼び出します。

Frag_Lista

public void function_in_fragment() { 
//some code 
Context context = getActivity(); 
DBhelper database = ((MainActivity)getActivity()).getDatabase(); 
Cursor cursor=database.ottieni_tutto(); 
genera_lista(cursor,getView()); 

}

public void genera_lista(Cursor cursor, View v) { 
    list.clear(); 
    if(cursor!=null) { 
     if(cursor.moveToFirst()) { 
      while (!cursor.isAfterLast()) { 
       //Log.d(TAG,cursor.getString(cursor.getColumnIndex(DBhelper.COL_NOME))); 
       String nome = cursor.getString(cursor.getColumnIndex(DBhelper.COL_NOME)); 
       String tipo = cursor.getString(cursor.getColumnIndex(DBhelper.COL_TIPO)); 
       String difficolta = cursor.getString(cursor.getColumnIndex(DBhelper.COL_DIFFICOLTA)); 
       String immagine = cursor.getString(cursor.getColumnIndex(DBhelper.COL_IMMAGINE)); 
       Food_Card food_card = new Food_Card(immagine, nome, tipo, difficolta); 
       list.add(food_card); 
       cursor.moveToNext(); 
      } 
      cursor.close(); 
     } 
     else Log.d(TAG,"Cursor vuoto"); 
    } 
    else Log.d(TAG,"Cursor nullo"); 

    recyclerView = (RecyclerView) v.findViewById(R.id.recyclerView); 
    layoutManager = new LinearLayoutManager(getActivity()); 
    recyclerView.setLayoutManager(layoutManager); 
    recyclerView.setHasFixedSize(true); 
    adapter=new food_adapter(getActivity(),list); 
    recyclerView.setAdapter(adapter); 

}

MainActivity

public void function_in_mainActivity(String[] parametri) { 
Cursor cursor=database.query_filtri(parametri); 
Frag_Lista nothing=new Frag_Lista(); 
View v= ? 
nothing.genera_lista(cursor,v); 

}

現在のビューを正しく渡すにはどうすればよいですか?

Frag_Lista

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.frag_lista, container, false); 
    setHasOptionsMenu(true); 
    return(v); 
} 
+0

メソッドのシグネチャにViewパラメータを使用していません。なぜあなたはそれが必要なのですか? @ムラツク。 –

+0

。間違ったコード:edit – SctALE

+0

'onCreateView'メソッドはどのように見えますか? –

答えて

0
あなた onCreateView
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.frag_lista, container, false); 
    recyclerView = (RecyclerView) v.findViewById(R.id.recyclerView); 
    setHasOptionsMenu(true); 
    return(v); 
} 

このようなクレートフィールドは recyclerViewのためのあなたの Fragmentの内側に変更し

これで、いつもRecyclerViewへの参照があり、メソッドの引数として渡す必要はありません。

public void genera_lista(Cursor cursor) 
+0

したがって、genera_lista()で削除する必要があります。recyclerView =(RecyclerView)v.findViewById(R.id.recyclerView);? – SctALE

+0

私はrecyclerView =(RecyclerView)getView()を削除しました。findViewById(R.id.recyclerView);関数から、しかし、私は主な活動、その関数を呼び出すときに、recyclerViewはnullです – SctALE

関連する問題