带 Spinner 的 SwipeRefreshLayout

SwipeRefreshLayout with Spinner

我一直在尝试为我的 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?...");

        }
    });

非常感谢!

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

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

希望对你有所帮助,欢迎评论。

SwipeRefreshLayout 在其子视图上滑动时有效。

在您的例子中,当单击 Spinner 时,它会以 DropdownPopup 形式打开列表,它是 ListPopupWindow 的子类。它不是 SwipeRefreshLayout 的子视图,而是弹出窗口 window,因此滑动不起作用。但是,如果您在未打开下拉列表的情况下在 Spinner 上滑动,它就会起作用。