안 드 로 이 드 는 SwipeRefreshLayout 를 사용 하여 ListView 드 롭 다운 을 실현 합 니 다.

본 논문 의 사례 는 안 드 로 이 드 가 ListView 드 롭 다운 을 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.

이번 에는 시스템 의 Swipe RefreshLayout 를 사용 하여 드 롭 다운 새로 고침 을 실현 하고 ListView 의 미끄럼 감청 을 설정 하여 맨 아래로 미 끄 러 졌 는 지 판단 한 다음 에 더 많이 불 러 옵 니 다.
이것 은 PullToRefreshListView 보다 훨씬 간단 합 니 다.PullToRefreshListView 가 드 롭 다운 리 셋 을 실현 하려 면 이 블 로 그 를 볼 수 있 습 니 다.
안 드 로 이 드 는 PullToRefresh 프레임 워 크 를 사용 하여 ListView 드 롭 다운 을 실현 합 니 다.
어떤 것 을 사용 하 는 지 에 대해 서 는 제품 의 수요 에 따라 선택 할 수 있 습 니 다.이 두 가지 갱신 은 지금까지 세상 에 PullToRefreshListView 를 사용 한 것 이 비교적 많 습 니 다.
우선 Swipe Refresh Layout 의 다섯 가지 방법 을 말씀 드 리 겠 습 니 다.
1.setOn RefreshListener():제스처 슬라이딩 모니터 를 설정 합 니 다.
2.setProgressBackgroundColor():진도 권 의 배경 색 을 설정 합 니 다.
3.setColorSchemeResources():진도 애니메이션 의 색상 을 설정 합 니 다.
4.set Refreshing():구성 요소 의 세척 상 태 를 설정 합 니 다.
5.setSize():진도 권 의 크기 설정
이것 은 여러분 이 간단하게 알 아 보 세 요.아래 코드 에서 모두 사용 합 니 다.
먼저 레이아웃 파일 을 말 합 니 다.Swipe RefreshLayout 으로 드 롭 다운 새로 고침 을 하려 면 ListView 를 Swipe RefreshLayout 레이아웃 에 써 야 합 니 다.

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:id="@+id/srfl"> 
 
 <ListView 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  android:id="@+id/listview" /> 
</android.support.v4.widget.SwipeRefreshLayout> 
제 가 직접 쓴 데모 라 서 내 려 갈 때 1 초 지연 되 는 handler 를 보 내 고 데이터 새로 고침 adapter 를 추가 합 니 다.
더 많이 불 러 올 때 ListVIEW 에 미끄럼 감청 을 설정 하여 adapter 의 맨 아래로 미 끄 러 졌 는 지 판단 한 다음 에 데 이 터 를 불 러 와 adapter 를 새로 고 칩 니 다.

public class MainActivity extends Activity { 
 private ListView mListView; 
 private SwipeRefreshLayout swipeRefreshLayout; 
 private List<String> stringList=new ArrayList<>(); 
 private ArrayAdapter<String> adapter; 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.activity_main); 
   
  for (int x=0 ; x<16;x++){ 
   stringList.add("    :     Z"+"---"+x); 
  } 
  initView(); 
 } 
 
 private void initView() { 
  swipeRefreshLayout= (SwipeRefreshLayout) findViewById(R.id.srfl); 
  //        ;(        SwipeRefreshLayout.LARGE DEFAULT,       ) 
  swipeRefreshLayout.setSize(SwipeRefreshLayout.LARGE); 
  //         。             :    
  swipeRefreshLayout.setProgressBackgroundColorSchemeColor(Color.CYAN); 
  //         。             ,         ,            
  swipeRefreshLayout.setColorSchemeResources(android.R.color.holo_orange_dark 
    ,android.R.color.holo_blue_dark 
    ,android.R.color.holo_red_dark 
    ,android.R.color.widget_edittext_dark); 
  mListView= (ListView) findViewById(R.id.listview); 
  adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, stringList); 
  mListView.setAdapter(adapter); 
 
  //          
  swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
   public void onRefresh() { 
    //      1  handler   
    handler.sendEmptyMessageDelayed(199,1000); 
   } 
  }); 
 
  // listview          
  mListView.setOnScrollListener(new AbsListView.OnScrollListener() { 
   //               
   public void onScrollStateChanged(AbsListView view, int scrollState) { 
    switch (scrollState){ 
     //        
     case AbsListView.OnScrollListener.SCROLL_STATE_IDLE: 
 
      //         
      if(view.getLastVisiblePosition()==(view.getCount())-1){ 
       for(int x=0;x<5;x++){ 
        stringList.add(stringList.size(),"    "+x); 
       } 
       adapter.notifyDataSetChanged(); 
      } 
      break; 
    } 
   } 
   //          
   public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
   } 
  }); 
 } 
 
 private Handler handler=new Handler(){ 
  @Override 
  public void handleMessage(Message msg) { 
   if(msg.what==199){ 
    stringList.add(0,"    "); 
    adapter.notifyDataSetChanged(); 
    //         ;false     
    swipeRefreshLayout.setRefreshing(false); 
   } 
  } 
 }; 
} 
이 안 에는 Swipe RefreshLayout 의 몇 가지 방법 을 보 여 드 리 기 위해 기본 값 을 모두 사용 하면 set ProgressBackgroundColor():setColor SchemeResources():set Size():이 세 가지 방법 을 제거 할 수 있 습 니 다.
이렇게 하면 코드 가 더욱 적 고 기본 효과 도 매우 좋 습 니 다.이것 은 여러분 의 요구 에 달 려 있 습 니 다.
소스 코드
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기