2016-08-07 3 views
0

내 MainActivity 내부의 메서드를 사용하여 단편화 된 ListView에서 값을 가져 오려고합니다. 여기 MainActivity에서 메서드로 단편에서 ListView 값 가져 오기

내가 내 목록보기에 텍스트 뷰의 항목을 추가하고 내 조각입니다 :

@Override 
public void onStart(){ 
    super.onStart(); 
    FirebaseListAdapter<String> adapter = new FirebaseListAdapter<String>(
      getActivity(), 
      String.class, 
      R.layout.textview_layout, 
      mRootRef) { 
     @Override 
     protected void populateView(View view, String s, int i) { 
      EditText editText = (EditText)view.findViewById(R.id.input_edittext); 
      editText.setHint(s); 
     } 
    }; 
    listView.setAdapter(adapter); 
} 

그리고이가 내 조각 내에서이 방법 각 텍스트 뷰에서 값을 얻으려고 추가 될 때 :

public void getListViewItems(ListView l){ 
    for(int i=0;i<l.getAdapter().getCount();i++) 
     System.out.println(l.getItemAtPosition(i)); 
} 

나는 MainActivity에서이 같은 방법을 트리거 :

public void getListItems(){ 
    driverFragment = new DriverFragment(); 
    driverFragment.getListViewItems(driverFragment.listView); 
} 

그 모두 널 객체 참조 결과 : 널 객체 참조

에 ') android.widget.ListAdapter android.widget.ListView.getAdapter ('가상 메소드를 호출

시도

+0

당신은 산부인과에서 값을 얻기 위해 노력하고있다 아직 생성되지 않은 ject. –

+0

하지만 내 목록에는 항목이 가득합니다. –

+0

Fragment 개체를 생성한다고해서 해당 개체가 작업에 첨부 된 것은 아닙니다. :) 단편에서 활동으로 데이터를 보내는 가장 좋은 방법은 인터페이스입니다. –

답변

0

제 경우 아래 코드는 정상적으로 작동합니다.

활동 클래스

public class MainActivity extends ActionBarActivity implements MenuListFragment.ListCallbacks { 

    private static final String TAG = MainActivity.class.getSimpleName(); 

    private FragmentManager mFragmentManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mFragmentManager = getSupportFragmentManager(); 

     mFragmentManager.beginTransaction() 
       .add(R.id.frg_menu, new MenuListFragment()) 
       .commit(); 
    } 

    @Override 
    public void onListView(ListView listView) { 
     BaseAdapter adapter = (BaseAdapter) listView.getAdapter(); 
     Log.d(TAG, "" + adapter.getCount()); 
    } 
} 

조각 클래스

public class MenuListFragment extends Fragment{ 

    private List<MenuItem> mMenuList = new ArrayList<>(); 

    private MenuListAdapter mAdapter; 

    private ListView lvMenu; 

    public interface ListCallbacks { 
     void onListView(ListView listView); 
    } 

    private ListCallbacks mListCallbacks = null; 

    public MenuListFragment() { 

    } 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 

     if(!(activity instanceof ListCallbacks)){ 
      throw new IllegalStateException("Activity must implement MenuListFragment's callbacks."); 
     } 

     mListCallbacks = (ListCallbacks) activity; 

    } 

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

     // Initialized mMenuList 

     mAdapter = new MenuListAdapter(getActivity(), R.layout.simple_menu_item, mMenuList); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 

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

     lvMenu = (ListView) rootView.findViewById(R.id.lv_menu); 
     lvMenu.setAdapter(mAdapter); 

     return rootView; 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 

     if(mListCallbacks != null) { 
      mListCallbacks.onListView(lvMenu); 
     } 
    } 
} 

main_activity

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/frg_menu" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginLeft="@dimen/activity_horizontal_margin" 
    android:layout_marginRight="@dimen/activity_horizontal_margin" 
    tools:layout="@android:layout/list_content"> 

</FrameLayout> 
+0

어떻게 구현할지 모르겠다. 그래서 저는 제 주 수업과 단편 수업을 보여줌으로써 더 잘 이해할 수 있다고 생각합니다. 여기에 내 [MainActivity] (http://pastebin.com/qEjRX2MF)가 있으며 여기에는 [Fragments] (http://pastebin.com/gStuNuxJ) –

관련 문제