2016-08-25 50 views
0

我一直在试图为我的微调实现SwipeRefreshLayout的功能,但没有任何事情发生。有没有人有一个想法,为什么这不起作用?微调器第一次加载数据没有问题,但是当我做拖动手势时,什么也没有发生。没有颜色,没有旋转,没有的System.out.println,没有什么:(SwipeRefreshLayout与微调

这是我的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?..."); 

     } 
    }); 

谢谢很多提前!

+0

您是否在尝试打开微调框时滑动(作为下拉菜单)?我认为这是行不通的。 – sJy

+0

谢谢@sJy。是的,我打开Spinner时想刷一下。所以这不是这样做的,是吧? : -/ –

+0

亲爱的@sJy。我已经在这个http://stackoverflow.com/questions/23830594/swiperefreshlayout-can-host-only-one-direct-child上实现了答案,在一个RelativeLayout中设置了Spinner,我可以更清楚地看到你的意思。 SwipeRefreshLayout正在工作,但只在选定的一个小元素的区域。你知道如何刷新微调,当它被打开的任何机会? –

回答

1

SwipeRefreshLayout在其子视图上滑动时起作用。

对于您的情况,当单击微调框时,它将打开列表DropdownPopup,它是ListPopupWindow的一个子类。这不是SwipeRefreshLayout的子视图,但弹出窗口&因此刷卡不起作用。但是,如果您在未打开下拉菜单时轻扫微调器,它就会起作用。

+0

这是正确的,@sJy。我仍然在搞清楚如何在打开的Spinner上执行拖拽手势时执行一些操作,这显然不是通过SwipeRefreshLayout进行的。 –

0

请在下面的代码添加到您的onCreate方法初始化后刷卡urse

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

我希望这会帮助你,随时发表评论。

+0

Thanks @Mahamadali。我现在可以看到这个小圆圈,但它不会消失。而且,正如sJy指出的那样,这甚至可能不是实施刷卡更新Spinner内部列表的方式。 –

+0

事实上,我根据需要回答你只是想让那个圆圈指示器显示@MarieAmida。 – Mahamadali