Android 오픈 소스 프로젝트 PullToRefresh 드 롭 다운 리 셋 기능 상세 설명 2
9721 단어 AndroidPullToRefresh드 롭 다운 리 셋
여기 서 소개 하 는 것 은 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이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.