Android 오픈 소스 프로젝트 PullToRefresh 드 롭 다운 리 셋 기능 상세 설명 2

먼저 효과 도 보기:

여기 서 소개 하 는 것 은 PullToRefreshGridView 의 사용 방법 입 니 다.기 존의 PullToRefreshListView 방법 과 똑 같 습 니 다.이 오픈 소스 프로젝트 의 모듈 화가 좋아 서 쉽게 실현 할 수 있 습 니 다.우 리 는 다른 문 제 를 고려 하지 않 고 이전에 컨트롤 을 사용 한 방식 으로 조작 할 수 있다 는 것 과 같다. 
생각: 
1.레이아웃 파일 을 쓰 고 새로 고침 이 가능 한 컨트롤 을 넣 습 니 다. 
2.새로 고침 컨트롤 을 찾 아 모니터 를 설정 하고 새로 고침 방법 에서 비동기 작업 을 시작 합 니 다. 
3.이 드 롭 다운 으로 컨트롤 을 새로 고 치 는 getRefreshableView()방법 으로 GridView 대상 을 얻 고 정상 적 인 조작 에 따라 어댑터 를 설정 합 니 다. 
4.비동기 작업 에서 링크 드 리스트 를 통 해 머리 나 꼬리 에 새로운 데 이 터 를 추가 합 니 다. 
실현: 
1.레이아웃 파일 
우 리 는 여전히 GridView 를 사용 하 는 것 처럼 GridView 의 속성 을 정의 할 수 있 음 을 볼 수 있다.물론 ptr:네 임 스페이스 를 통 해 전속 속성 을 설정 할 수 있 습 니 다. 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent" >

<!-- The PullToRefreshGridView replaces a standard GridView widget. -->
 <com.handmark.pulltorefresh.library.PullToRefreshGridView
  xmlns:ptr="http://schemas.android.com/apk/res-auto"
  android:id="@+id/pull_refresh_grid"
  android:layout_height="fill_parent"
  android:layout_width="fill_parent"
  android:numColumns="auto_fit"
  android:verticalSpacing="1dp"
  android:horizontalSpacing="1dp"
  android:columnWidth="100dp"
  android:stretchMode="columnWidth"
  android:gravity="fill"
  ptr:ptrMode="both"
  ptr:ptrDrawable="@drawable/ic_launcher" />

</LinearLayout>

2.새로 고침 할 수 있 는 컨트롤 을 찾 고 모니터 를 설정 합 니 다. 
이곳 의 감청 기 는 이전 글 과 달리 양 방향 이다.그래서 미끄럼 조작 을 감청 하기 편 해 요! 

 /**
  *       view,        
  */
 private void initPTRGrideView() {
  //        GridView
  mPullRefreshGridView = (PullToRefreshGridView) findViewById(R.id.pull_refresh_grid);
  //      ,               ,           
  mPullRefreshGridView.setOnRefreshListener(new OnRefreshListener2<GridView>() {

   @Override
   public void onPullDownToRefresh(PullToRefreshBase<GridView> refreshView) {
    Toast.makeText(getApplicationContext(), "  ", Toast.LENGTH_SHORT).show();
    new GetDataTask(mPullRefreshGridView, mAdapter, mListItems).execute();
   }

   @Override
   public void onPullUpToRefresh(PullToRefreshBase<GridView> refreshView) {
    Toast.makeText(getApplicationContext(), "  ", Toast.LENGTH_SHORT).show();
    new GetDataTask(mPullRefreshGridView, mAdapter, mListItems).execute();
   }

  });
 }

3.어댑터 설정 을 위해 GridView 를 찾 습 니 다. 

 //      ,      string  
 private LinkedList<String> mListItems;
 //         
 private PullToRefreshGridView mPullRefreshGridView;
 //       ,     PullToRefreshGridView ,           
 private GridView mGridView;
 //  GridView    
 private ArrayAdapter<String> mAdapter;

어댑터 에 데이터 가 없 을 때 표시 되 는 내용 도 설정 할 수 있 습 니 다.호출 방법 은 setEmpty View()입 니 다. 

 /**
  *   GridView,     ,       
  */
 private void initGrideView() {
  mGridView = mPullRefreshGridView.getRefreshableView();
  //  String  ,      LinkedList ,           LinkedList              
  String []data = new String[] {"android","ios","wp","java","c++","c#"};
  mListItems = new LinkedList<String>();
  mListItems.addAll(Arrays.asList(data));

  //                 ,             string  ,      “    ,      ”
  TextView tv = new TextView(this);
  tv.setGravity(Gravity.CENTER);
  tv.setText("    ,      ");
  //             
  mPullRefreshGridView.setEmptyView(tv);

  //     
  mAdapter = new ArrayAdapter<String>(this, 
    android.R.layout.simple_list_item_1, mListItems);
  mGridView.setAdapter(mAdapter);
 }

4.비동기 작업 을 수행 하고 데 이 터 를 불 러 오 는 것 을 모 의 합 니 다.이것 은 이전 쓰기 와 같 습 니 다. 

package com.kale.ptrgridview;

import java.util.LinkedList;

import android.os.AsyncTask;
import android.widget.ArrayAdapter;

import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
import com.handmark.pulltorefresh.library.PullToRefreshGridView;

/**
 * @author:Jack Tony
 * @tips :               ,    
 * @date :2014-10-14
 */
public class GetDataTask extends AsyncTask<Void, Void, Void>{

 private PullToRefreshGridView mPullRefreshGridView;
 private ArrayAdapter<String> mAdapter;
 private LinkedList<String> mListItems;
 
 
 public GetDataTask(PullToRefreshGridView gridView,
   ArrayAdapter<String> adapter,LinkedList<String> listItems) {
  // TODO            
  mPullRefreshGridView = gridView;
  mAdapter = adapter;
  mListItems = listItems;
 }
 
 @Override
 protected Void doInBackground(Void... params) {
  //    ,  2  
  try {
   Thread.sleep(2000);
  } catch (InterruptedException e) {
  }
  return null;
 }
 
 @Override
 protected void onPostExecute(Void result) {
  // TODO          
  super.onPostExecute(result);
  
  //       ,              
  Mode mode = mPullRefreshGridView.getCurrentMode();
  if(mode == Mode.PULL_FROM_START) {
   mListItems.addFirst("         ");
  }
  else {
   mListItems.addLast("         ");
  }
  //        
  mAdapter.notifyDataSetChanged();
  //          
  mPullRefreshGridView.onRefreshComplete();
  
 }
 


}

MainActivity.JAVA 의 모든 코드 

package com.kale.ptrgridview;

import java.util.Arrays;
import java.util.LinkedList;

import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.TextView;
import android.widget.Toast;

import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;
import com.handmark.pulltorefresh.library.PullToRefreshGridView;

public class MainActivity extends Activity {
 
 //      ,      string  
 private LinkedList<String> mListItems;
 //         
 private PullToRefreshGridView mPullRefreshGridView;
 //       ,     PullToRefreshGridView ,           
 private GridView mGridView;
 //  GridView    
 private ArrayAdapter<String> mAdapter;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  initView();
 }

 private void initView() {
  // TODO          
  initPTRGrideView();
  initGrideView();
 }

 /**
  *       view,        
  */
 private void initPTRGrideView() {
  //        GridView
  mPullRefreshGridView = (PullToRefreshGridView) findViewById(R.id.pull_refresh_grid);
  //      ,               ,           
  mPullRefreshGridView.setOnRefreshListener(new OnRefreshListener2<GridView>() {

   @Override
   public void onPullDownToRefresh(PullToRefreshBase<GridView> refreshView) {
    Toast.makeText(getApplicationContext(), "  ", Toast.LENGTH_SHORT).show();
    new GetDataTask(mPullRefreshGridView, mAdapter, mListItems).execute();
   }

   @Override
   public void onPullUpToRefresh(PullToRefreshBase<GridView> refreshView) {
    Toast.makeText(getApplicationContext(), "  ", Toast.LENGTH_SHORT).show();
    new GetDataTask(mPullRefreshGridView, mAdapter, mListItems).execute();
   }

  });
 }
 
 /**
  *   GridView,     ,       
  */
 private void initGrideView() {
  mGridView = mPullRefreshGridView.getRefreshableView();
  //  String  ,      LinkedList ,           LinkedList              
  String []data = new String[] {"android","ios","wp","java","c++","c#"};
  mListItems = new LinkedList<String>();
  mListItems.addAll(Arrays.asList(data));

  //                 ,             string  ,      “    ,      ”
  TextView tv = new TextView(this);
  tv.setGravity(Gravity.CENTER);
  tv.setText("    ,      ");
  //             
  mPullRefreshGridView.setEmptyView(tv);

  //     
  mAdapter = new ArrayAdapter<String>(this, 
    android.R.layout.simple_list_item_1, mListItems);
  mGridView.setAdapter(mAdapter);
 }
 
 
}

원본 다운로드:http://xiazai.jb51.net/201609/yuanma/AndroidGridView(jb51.net).rar
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기