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>

这是我使用 chrisbanes pull 来刷新库的 XML 布局文件

出于某种原因,它只会显示可点击项目的可扩展列表中的第一个,当我点击它时它不会展开行,我一直在玩这个并且对为什么会发生这种情况感到困惑,这里是片段类的代码

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 但没有任何操作,刷新的拉动将在加载时出现,如果我取消拉动刷新,它确实有效,我已经使用过它以前用其他代码围绕其他类型的布局,并且从未遇到过这个,也许这很愚蠢,我不确定,但我想也许有人可以更快地看到问题。

4

1 回答 1

1

我从来没有使用过那个库,但一般来说你不能把 aListView放在里面ScrollView(想想看)。但是,查看库类,您应该尝试PullToRefreshExpandableListView改用。

于 2012-12-24T00:31:12.263 回答