2012-12-23 2 views
0
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <com.handmark.pulltorefresh.library.PullToRefreshScrollView 
     xmlns:ptr="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/pull_refresh_scrollview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

     <ExpandableListView 
     android:id="@+id/android:list" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="@drawable/black" /> 

    <TextView 
     android:id="@+id/android:empty" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:text="No items" 
     android:textColor="@color/White" /> 

    </com.handmark.pulltorefresh.library.PullToRefreshScrollView> 

</LinearLayout> 

이 내 XML 레이아웃 파일 내가 chrisbanes 라이브러리에게 그것은 단지 클릭 가능한 항목의 확장 목록에서 첫 번째 표시됩니다 어떤 이유로 hereExpandableList

를 새로 끌어 사용하고하는 것입니다와 PullToRefresh 레이아웃, 나는 그것을 클릭 할 때이 행을 확장하지 않습니다, 나는이 주변에 재생이 일어나는 이유에 혼란 스러워요되고, 여기에 사람이 아마 말할 수있는 경우 조각 클래스

public class TestExpandFragment extends ExpandableListFragment { 

    private String[] divideOptions = { "Test1", "Test2", "Test3", "Test4", 
      "Test5", "Test6", "Test7", "Test8" }; 

    PullToRefreshScrollView mPullRefreshScrollView; 
    ScrollView mScrollView; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 

     try { 

      SimpleExpandableListAdapter expListAdapter = new SimpleExpandableListAdapter(
        getActivity(), createGroupList(), // Creating group List. 
        R.layout.group_row, // Group item layout XML. 
        new String[] { "1" }, // the 
              // key 
              // of 
              // group 
              // item. 
        new int[] { R.id.row_name }, // ID of each group item.-Data 
                // under the key goes into 
                // this TextView. 
        createChildList(), // childData describes second-level 
             // entries. 
        R.layout.group_child_row, // Layout for sub-level 
               // entries(second 
        // level). 
        new String[] { "Sub Item" }, // Keys in childData maps to 
                // display. 
        new int[] { R.id.grp_child } // Data under the keys above go 
                // into these TextViews. 
      ); 
      setListAdapter(expListAdapter); // setting the adapter in the list. 

     } catch (Exception e) { 
      System.out.println("Errrr +++ " + e.getMessage()); 
     } 

     View view = inflater.inflate(R.layout.test_expandable_fragment, container, 
       false); 

     /** Implement Pull To Refresh **/ 
     mPullRefreshScrollView = (PullToRefreshScrollView) view 
       .findViewById(R.id.pull_refresh_scrollview); 
     mPullRefreshScrollView 
       .setOnRefreshListener(new OnRefreshListener<ScrollView>() { 

        @Override 
        public void onRefresh(
          PullToRefreshBase<ScrollView> refreshView) { 

         new GetDataTask().execute(); 

        } 

       }); 

     mScrollView = mPullRefreshScrollView.getRefreshableView(); 

     return view; 
    } 

    /* Creating the Hashmap for the row */ 
    @SuppressWarnings("unchecked") 
    private List createGroupList() { 
     ArrayList result = new ArrayList(); 
     for (int i = 0; i < 8; ++i) { // 8 groups........ 
      HashMap m = new HashMap(); 
      m.put("1", divideOptions[i]); // the key and it's value. 
      result.add(m); 
     } 
     return (List) result; 
    } 

    /* creatin the HashMap for the children */ 
    @SuppressWarnings("unchecked") 
    private List createChildList() { 

     ArrayList result = new ArrayList(); 
     for (int i = 0; i < 15; ++i) { // this -15 is the number of groups(Here 
             // it's fifteen) 
      /* 
      * each group need each HashMap-Here for each group we have 3 
      * subgroups 
      */ 
      ArrayList secList = new ArrayList(); 
      for (int n = 0; n < 3; n++) { 
       HashMap child = new HashMap(); 
       child.put("Sub Item", "Sub Item " + n); 
       secList.add(child); 
      } 
      result.add(secList); 
     } 
     return result; 
    } 

    public void onContentChanged() { 
     System.out.println("onContentChanged"); 
     super.onContentChanged(); 
    } 

    /* This function is called on each child click */ 
    public boolean onChildClick(ExpandableListView parent, View v, 
      int groupPosition, int childPosition, long id) { 
     System.out 
       .println("Inside onChildClick at groupPosition = " 
         + groupPosition + " Child clicked at position " 
         + childPosition); 
     return true; 
    } 

    /* This function is called on expansion of the group */ 
    public void onGroupExpand(int groupPosition) { 
     try { 
      System.out.println("Group exapanding Listener => groupPosition = " 
        + groupPosition); 
     } catch (Exception e) { 
      System.out.println(" groupPosition Errrr +++ " + e.getMessage()); 
     } 
    } 

    /** Sleeper for the PullToRefresh **/ 
    private class GetDataTask extends AsyncTask<Void, Void, String[]> { 

     @Override 
     protected String[] doInBackground(Void... params) { 
      // Simulates a background job. 
      try { 
       Thread.sleep(1000); 
      } catch (InterruptedException e) { 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(String[] result) { 
      // Do some stuff here 

      // Call onRefreshComplete when the list has been refreshed. 
      mPullRefreshScrollView.onRefreshComplete(); 

      super.onPostExecute(result); 
     } 
    } 

} 

의 코드는 나 왜 이것이 일어나고 있는지 Test1 만 출력하지만 아무런 조치없이로드 할 때 새로 고침을 할 수 있습니다. 그리고 새로 고침을 풀면 작동하며 다른 코드와 함께 이전에 다른 유형의 레이아웃을 둘러 봤습니다. 이걸 보니 어쩌면 어리석은 짓 일지 모르겠지만 누군가가 문제를 더 빨리 볼 수 있다고 생각했습니다.

답변

1

나는이 라이브러리를 사용한 적이 없지만 일반적으로 ListViewScrollView 안에 넣을 수는 없습니다 (생각해보십시오). library classes을 보면 대신 PullToRefreshExpandableListView을 사용해야합니다.

관련 문제