在App开发中,对于信息的获取与演示,不可能全部将其获取与演示,为了在用户使用中,给予用户以友好、方便的用户体验,以滑动、下拉的效果动态加载数据的要求就会出现。为此,该效果功能就需要应用到所需要的展示页面中。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<!--?xml
version=1.0encoding=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.0encoding=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
|
importjava.util.LinkedList;importcom.example.sampledemo.view.PullToRefreshListView;importandroid.os.AsyncTask;importandroid.widget.BaseAdapter;publicclassPullTask
extendsAsyncTask<void,
string="">{ privatePullToRefreshListView
pullToRefreshListView; //实现下拉刷新与上拉加载的ListView privateintpullState;
//记录判断,上拉与下拉动作 privateBaseAdapter
baseAdapter; //ListView适配器,用于提醒ListView数据已经更新 privateLinkedList<string>
linkedList; publicPullTask(PullToRefreshListView
pullToRefreshListView, intpullState, BaseAdapter
baseAdapter, LinkedList<string> linkedList) { this.pullToRefreshListView
= pullToRefreshListView; this.pullState
= pullState; this.baseAdapter
= baseAdapter; this.linkedList
= linkedList; } @Override protectedString
doInBackground(Void... params) { try{ Thread.sleep(1000); }catch(InterruptedException
e) { } returnStringTest; } @Override protectedvoidonPostExecute(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
|
importjava.util.LinkedList;importcom.example.sampledemo.R;importandroid.content.Context;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.BaseAdapter;importandroid.widget.TextView;publicclassPullAdapter
extendsBaseAdapter
{ privateLinkedList<string>
linkedList; privateLayoutInflater
mInflater; publicPullAdapter(LinkedList<string>
linkedList, Context context) { mInflater
= LayoutInflater.from(context); this.linkedList
= linkedList; } @Override publicintgetCount()
{ returnlinkedList.size(); } @Override publicObject
getItem(intposition)
{ returnlinkedList.get(position); } @Override publiclonggetItemId(intposition)
{ returnposition; } @Override publicView
getView(intposition,
View convertView, ViewGroup parent) { ViewHolder
holder=null; if(convertView
== null)
{ holder
= newViewHolder(); 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){ finalString
dataStr = linkedList.get(position); holder.textView.setText(dataStr); } returnconvertView; } privatestaticclass
ViewHolder { TextView
textView; //数据显示区域 }}</string></string> |
|
1
2
3
4
|
<!--?xml
version=1.0encoding=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.0encoding=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
|
importjava.util.Arrays;importjava.util.LinkedList;importcom.example.sampledemo.view.PullToRefreshBase.OnRefreshListener;importcom.example.sampledemo.view.PullToRefreshListView;importcom.example.sampledemo.view.adapter.PullAdapter;importcom.example.sampledemo.view.task.PullTask;importandroid.os.Bundle;importandroid.widget.ArrayAdapter;importandroid.widget.ListView;importandroid.app.Activity;/** *
@ClassName MainActivity.java *
@Author MaHaochen *
@Date 2014-4-30 15:56:47 */publicclassMainActivity
extendsActivity
{ privateLinkedList<string>
mListItems; privatePullToRefreshListView
mPullRefreshListView; privateArrayAdapter<string>
mAdapter; privateListView
mListView; privatePullAdapter
pullAdapter; privateString[]
mStrings = { 初始数据01,初始数据02,初始数据03,初始数据04,初始数据05}; @Override protectedvoidonCreate(Bundle
savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initViews(); } privatevoidinitViews()
{ mPullRefreshListView
= (PullToRefreshListView) findViewById(R.id.pullrefresh); mPullRefreshListView.setOnRefreshListener(mOnrefreshListener); mListView
= mPullRefreshListView.getRefreshableView(); mListItems
= newLinkedList<string>(); mListItems.addAll(Arrays.asList(mStrings)); pullAdapter
= newPullAdapter(mListItems,
MainActivity.this); mListView.setAdapter(pullAdapter); } OnRefreshListener
mOnrefreshListener = newOnRefreshListener()
{ publicvoidonRefresh()
{ PullTask
pullTask = newPullTask(mPullRefreshListView,mPullRefreshListView.getRefreshType(),
pullAdapter, mListItems); pullTask.execute(); } };}</string></string></string> |
Android 下拉刷新上拉加载效果功能,使用开源项目android-pulltorefresh实现,布布扣,bubuko.com
Android 下拉刷新上拉加载效果功能,使用开源项目android-pulltorefresh实现
原文:http://blog.csdn.net/fngy123/article/details/37597975