使用Spinner进行SwipeRefreshLayout

时间:2016-08-25 09:31:55

标签: android spinner android-spinner swiperefreshlayout

我一直在尝试为我的Spinner实现SwipeRefreshLayout的功能,但什么也没发生。有没有人知道为什么这不起作用? Spinner第一次加载数据没有问题,但是当我执行拖动手势时,没有任何事情发生。没有颜色,没有旋转,没有System.out.println,没有:(

这是我的XML和Java代码。

XML

        <android.support.v4.widget.SwipeRefreshLayout
            android:layout_width="0dp"
            android:layout_height="44dp"
            android:id="@+id/swipe_main">
            <Spinner
                android:id="@+id/data_spinner"
                android:layout_width="0dp"
                android:layout_height="44dp"/>
        </android.support.v4.widget.SwipeRefreshLayout>

JAVA

    spinner = (Spinner) findViewById(R.id.data_spinner);
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, dataArrayList);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(this);

    swipe = (SwipeRefreshLayout) findViewById(R.id.swipe_main);
    swipe.setColorSchemeColors(android.R.color.holo_blue_bright, android.R.color.holo_green_light, android.R.color.holo_orange_light, android.R.color.holo_red_light);
    swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            adapter=new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_spinner_item,dataArrayList);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(adapter);
            swipe.setRefreshing(false);
            System.out.println("Is swipe refreshing?...");

        }
    });

提前多多感谢!

2 个答案:

答案 0 :(得分:1)

在其子视图上滑动时,

SwipeRefreshLayout可以正常工作。

在您的情况下,当单击Spinner时,它会将列表打开为DropdownPopup,它是ListPopupWindow的子类。它不是SwipeRefreshLayout的子视图,而是一个弹出窗口&amp;因此滑动不起作用。但是,如果在未打开下拉列表的情况下滑过Spinner,它就会起作用。

答案 1 :(得分:0)

请在初始化滑动课程后将以下代码添加到onCreate方法

swipe.post(new Runnable() {
@Override
public void run() {
    swipe.setRefreshing(true);
}
});

我希望这会对你有所帮助,请随意发表评论。