2016-07-26 4 views
1

adapterfragmentの間でデータを渡すにはどうすればよいですか?アダプタからフラグメントにデータを渡すにはどうすればいいですか?

マイアダプタ:

finalHolder.spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     finalHolder.spinner.setSelection(position); 
     selState = finalHolder.spinner.getSelectedItem().toString(); 
     System.out.println(selState); 
     Toast.makeText(getContext(), 
       "Clicked on Planet: " + selState + "", Toast.LENGTH_SHORT).show(); 

     Fragment fragment = new Fragment(); 
     Bundle bundle = new Bundle(); 
     bundle.putString("key", selState); 
     Log.i("BUNDLE", bundle.toString()); 
     fragment.setArguments(bundle); 
    } 
}); 

マイフラグメント:

public class MyListFragment extends Fragment{ 

    ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_list2, container, false); 

     /*Bundle bundle = this.getArguments(); 
     String strtext = bundle.getString("key", " "); 
     System.out.println(strtext);*/ 
     System.out.println("prima ancora"); 

     Bundle arguments = this.getArguments(); 
     System.out.println("prima"); 
     if (arguments != null) { 
      System.out.println("dopo"); 

      //String userId = arguments.getString("key"); 
       //System.out.println("finalmente:"+userId); 
      user = getArguments().getString("Key"); 


     } 

} 
+0

リスナーを使用します。アダプタを作成すると、リスナーの参照を渡し、そのリスナを使用してデータをフラグメントに戻すことができます –

答えて

0

のJavaについての詳細を読むとAndroidを開発する前にオブジェクト指向してください。

しかし、あなたはその断片にアダプターからのデータを渡すためのインターフェイスを使用することができ、一般的に、あなたがこのようなインタフェースを実装することができますあなたの場合はJava - Interface

詳細を読むことができます:あなたに

Public Interface YourInterfaceName{ 
    void onItemSelected(String key, String Value); 
} 

をあなたのintrfaceを実装する必要がありフラグメント:

あなたのアダプタで
public class YourFragment extends Fragment implements YourInterface 
{ 
    YourAdapter.setOnItemSelected(this); 
} 

とフィンレイは、次の操作を行います。

public class Adapter 
{ 
    public void setOnItemSelected(YourInterface yourIntrface) 
    { 
     this.yourIntrface = yourIntrface; 
    } 
    ....... 
    finalHolder.spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
..... 
    //instead of creating instance of fragment do this: 
    yourInterface.onItemSelected(yourKey, value);  
} 
関連する問題