标签:下拉刷新 上拉加载 listview android-pulltorefres 开源项目
在App开发中,对于信息的获取与演示,不可能全部将其获取与演示,为了在用户使用中,给予用户以友好、方便的用户体验,以滑动、下拉的效果动态加载数据的要求就会出现。为此,该效果功能就需要应用到所需要的展示页面中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<!--?xml
version= 1.0 encoding=utf- 8 ?--> <resources> <declare-styleable
name= "PullToRefresh" > <flag
name= "pullDownFromTop" value= "0x1" > <flag
name= "pullUpFromBottom" value= "0x2" > <flag
name= "both" value= "0x3" > </flag></flag></flag></attr> </declare-styleable> </resources> srings.xml <!--?xml
version= 1.0 encoding=utf- 8 ?--> <resources> <string
name= "app_name" >SampleDemo</string> <string
name= "action_settings" >Settings</string> <string
name= "pull_to_refresh_pull_down_label" >滑动刷新</string> <string
name= "pull_to_refresh_release_label" >释放刷新</string> <string
name= "pull_to_refresh_refreshing_label" >加载中</string> <string
name= "pull_to_refresh_tap_label" >点击刷新</string> </resources> |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
import java.util.LinkedList; import com.example.sampledemo.view.PullToRefreshListView; import android.os.AsyncTask; import android.widget.BaseAdapter; public class PullTask
extends AsyncTask< void ,
string= "" >{ private PullToRefreshListView
pullToRefreshListView; //实现下拉刷新与上拉加载的ListView private int pullState;
//记录判断,上拉与下拉动作 private BaseAdapter
baseAdapter; //ListView适配器,用于提醒ListView数据已经更新 private LinkedList<string>
linkedList; public PullTask(PullToRefreshListView
pullToRefreshListView, int pullState, BaseAdapter
baseAdapter, LinkedList<string> linkedList) { this .pullToRefreshListView
= pullToRefreshListView; this .pullState
= pullState; this .baseAdapter
= baseAdapter; this .linkedList
= linkedList; } @Override protected String
doInBackground(Void... params) { try { Thread.sleep( 1000 ); } catch (InterruptedException
e) { } return StringTest; } @Override protected void onPostExecute(String
result) { if (pullState
== 1 )
{ //name=pullDownFromTop
value=0x1 下拉 linkedList.addFirst(顶部数据); } if (pullState
== 2 )
{ //name=pullUpFromBottom
value=0x2 上拉 linkedList.addLast(底部数据); } baseAdapter.notifyDataSetChanged(); pullToRefreshListView.onRefreshComplete(); super .onPostExecute(result); } }</string></string></ void ,> |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
import java.util.LinkedList; import com.example.sampledemo.R; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; public class PullAdapter
extends BaseAdapter
{ private LinkedList<string>
linkedList; private LayoutInflater
mInflater; public PullAdapter(LinkedList<string>
linkedList, Context context) { mInflater
= LayoutInflater.from(context); this .linkedList
= linkedList; } @Override public int getCount()
{ return linkedList.size(); } @Override public Object
getItem( int position)
{ return linkedList.get(position); } @Override public long getItemId( int position)
{ return position; } @Override public View
getView( int position,
View convertView, ViewGroup parent) { ViewHolder
holder= null ; if (convertView
== null )
{ holder
= new ViewHolder(); convertView
= mInflater.inflate(R.layout.layout_main_listitem, null ); holder.textView
= (TextView) convertView.findViewById(R.id.textView); convertView.setTag(holder); } else { holder
= (ViewHolder) convertView.getTag(); } if (linkedList.size()> 0 ){ final String
dataStr = linkedList.get(position); holder.textView.setText(dataStr); } return convertView; } private static class
ViewHolder { TextView
textView; //数据显示区域 } }</string></string> |
1
2
3
4
|
<!--?xml
version= 1.0 encoding=utf- 8 ?--> <linearlayout
android:background= "#FFFFFF" android:layout_height= "match_parent" android:layout_width= "match_parent" android:orientation= "vertical" xmlns:android= "http://schemas.android.com/apk/res/android" > <textview
android:gravity= "left" android:id= "@+id/textView" android:layout_height= "wrap_content" android:layout_margintop= "4dp" android:layout_width= "match_parent" android:textcolor= "#99CC66" android:textsize= "18dp" > </textview></linearlayout> |
1
2
3
4
5
6
|
<!--?xml
version= 1.0 encoding=utf- 8 ?--> <relativelayout
android:layout_height= "fill_parent" android:layout_width= "fill_parent" android:paddingbottom= "10dip" android:paddingtop= "10dp" xmlns:android= "http://schemas.android.com/apk/res/android" > <textview
android:id= "@+id/pull_to_refresh_text" android:layout_centerinparent= "true" android:layout_height= "wrap_content" android:layout_width= "wrap_content" android:text= "@string/pull_to_refresh_pull_down_label" android:textappearance= "?android:attr/textAppearanceMedium" android:textstyle= "bold" > <progressbar
android:id= "@+id/pull_to_refresh_progress" android:indeterminate= "true" android:layout_centervertical= "true" android:layout_height= "wrap_content" android:layout_marginleft= "30dip" android:layout_marginright= "20dip" android:layout_width= "wrap_content" android:visibility= "gone" style= "?android:attr/progressBarStyleSmall" > <imageview
android:id= "@+id/pull_to_refresh_image" android:layout_centervertical= "true" android:layout_height= "wrap_content" android:layout_marginleft= "30dip" android:layout_marginright= "20dip" android:layout_width= "wrap_content" > </imageview></progressbar></textview></relativelayout> |
1
2
3
4
|
<relativelayout
android:background= "#FFFFFF" android:layout_height= "match_parent" android:layout_width= "match_parent" xmlns:android= "http://schemas.android.com/apk/res/android" xmlns:cp= "http://schemas.android.com/apk/res/com.example.sampledemo" xmlns:tools= "http://schemas.android.com/tools" > <com.example.sampledemo.view.pulltorefreshlistview
android:background= "#FFFFFF" android:cachecolorhint= "#00000000" android:divider= "@android:color/black" android:dividerheight= "0.1dip" android:id= "@+id/pullrefresh" android:layout_height= "fill_parent" android:layout_width= "fill_parent" cp:mode= "both" > </com.example.sampledemo.view.pulltorefreshlistview> </relativelayout> |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
import java.util.Arrays; import java.util.LinkedList; import com.example.sampledemo.view.PullToRefreshBase.OnRefreshListener; import com.example.sampledemo.view.PullToRefreshListView; import com.example.sampledemo.view.adapter.PullAdapter; import com.example.sampledemo.view.task.PullTask; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; import android.app.Activity; /** *
@ClassName MainActivity.java *
@Author MaHaochen *
@Date 2014-4-30 15:56:47 */ public class MainActivity
extends Activity
{ private LinkedList<string>
mListItems; private PullToRefreshListView
mPullRefreshListView; private ArrayAdapter<string>
mAdapter; private ListView
mListView; private PullAdapter
pullAdapter; private String[]
mStrings = { 初始数据 01 ,初始数据 02 ,初始数据 03 ,初始数据 04 ,初始数据 05 }; @Override protected void onCreate(Bundle
savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); initViews(); } private void initViews()
{ mPullRefreshListView
= (PullToRefreshListView) findViewById(R.id.pullrefresh); mPullRefreshListView.setOnRefreshListener(mOnrefreshListener); mListView
= mPullRefreshListView.getRefreshableView(); mListItems
= new LinkedList<string>(); mListItems.addAll(Arrays.asList(mStrings)); pullAdapter
= new PullAdapter(mListItems,
MainActivity. this ); mListView.setAdapter(pullAdapter); } OnRefreshListener
mOnrefreshListener = new OnRefreshListener()
{ public void onRefresh()
{ PullTask
pullTask = new PullTask(mPullRefreshListView, mPullRefreshListView.getRefreshType(),
pullAdapter, mListItems); pullTask.execute(); } }; }</string></string></string> |
Android 下拉刷新上拉加载效果功能,使用开源项目android-pulltorefresh实现,布布扣,bubuko.com
Android 下拉刷新上拉加载效果功能,使用开源项目android-pulltorefresh实现
标签:下拉刷新 上拉加载 listview android-pulltorefres 开源项目
原文地址:http://blog.csdn.net/fngy123/article/details/37597975