2011-08-02 4 views
0

조각 클래스가 있고 그 레이아웃은 xml입니다. XML 조각의 레이아웃 안에는 gridview가 있습니다. gridview에 데이터를 표시하고 싶었습니다.안드로이드 애플 리케이션에서 조각에서 발견 gridview에서 데이터를 바인딩하는 방법?

내가 어떻게 안드로이드 애플 리케이션을 실행할 때, 실행/실행에 실패했습니다. 예기치 않게 중단되었습니다.

public class FrontPageFragment extends Fragment { 

//private ArrayAdapter adapter; 

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

    final String [] items=new String[]{"Item1","Item2","Item3","Item4"}; 
    ArrayAdapter ad=new ArrayAdapter<String>(this.getActivity().getApplicationContext(),R.layout.frontpage,items); 

    View fragmentView=getView();  
    GridView grid=(GridView)fragmentView.findViewById(R.id.forApprovalOrders); 
    grid.setAdapter(ad); 

    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.frontpage, container, false); 

} 

=========================================== ================

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <GridView android:id="@+id/forApprovalOrders" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:columnWidth="90dp" 
       android:numColumns="auto_fit" 
       android:verticalSpacing="10dp" 
       android:horizontalSpacing="10dp" 
       android:stretchMode="columnWidth" 
       android:gravity="center" 
    > 
    </GridView> 

    <ExpandableListView android:id="@+id/sampleExpandable" android:layout_height="wrap_content" android:layout_width="match_parent"></ExpandableListView> 


</LinearLayout> 

답변

0

나는이 ad.notifyDataSetChanged()를 원한다고 생각합니다.

0

잘못된 것일 수 있지만 레이아웃을 부 풀리기 전에 어댑터를 설정하는 것처럼 보입니다. 레이아웃을 부 풀리기 전에 gridview가없고 grid.setAdapter(...)NullPointerException을 던지기 때문에 문제가 발생할 것입니다. super.onActivityCreated(...)를 호출 한 후, onActivityCreated(...)onCreateView(...)에서 다음 코드를 이동하십시오 :

final String [] items=new String[]{"Item1","Item2","Item3","Item4"}; 
ArrayAdapter ad=new ArrayAdapter<String> 
    (this.getActivity().getApplicationContext(),R.layout.frontpage,items); 

View fragmentView=getView();  
GridView grid=(GridView)fragmentView.findViewById(R.id.forApprovalOrders); 
grid.setAdapter(ad); 
+0

답변 해 주셔서 감사합니다. 나는 네가 제안한 것을했으나 제대로 작동하지 않았다. – qme

0

당신이 시도 유무 :

가 해결되지 있다면
View fragmentView= inflater.inflate(R.layout.frontpage, container, false); 
    GridView grid=(GridView)fragmentView.findViewById(R.id.forApprovalOrders); 
    grid.setAdapter(ad); 

    // Inflate the layout for this fragment 
    return fragmentView; 

, 어떤 오류 메시지가 어떤 라인에서 그것을했다 디버깅하는 동안 중지 하시겠습니까?

관련 문제