android分页显示
Ⅰ android textview如何分页显示
textview不能分页的吧。。。据我所知,只能用scrollview
哦,那你这个想法……变数很大啊,因为你还要去分辨不同手机的屏幕分辨率,来确定一个textview能显示多少像素,来计算一屏幕能显示多少字。。。
Ⅱ android l中如何在原有的Listview基础上实现重新分页显示
我就不写代码了,帮你搞清楚listView的工作原理
你知道如果要它正常工作的话最主要就是设置Adapter对吧? 所以呢你看看Adapter里最主要的就是与数据源相关的逻辑,
Adapter会问你几个最重要的问题:
1。一共有多少行,2。每行显示什么样的布局,3。数据数组在哪里。
知道了原理,就可以回到你的需求, 你的数组是从网上取的,可能有很多,所以你可以把这个大的数组拆成几个小的数组, 然后每次下一页时就更换当前数组就行了,它会自动帮你刷新的。
Ⅲ 关于Android开发的Gridview分页显示功能,搞了几天无解,求教
这个不只是GridView一个控件,根据其他效果,是在外层套了一层ScrollView类似的组件,每个组件中放置一下GridView,是这样实现的
Ⅳ Android listview怎么实现滚动分页
通常这也分为两种方式,一种是设置一个按钮,用户点击即加载。另一种是当用户滑动到底部时自动加载。今天我就和大家分享一下这个功能的实现。
首先,写一个xml文件,moredata.xml,该文件即定义了放在listview底部的视图:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/bt_load"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="加载更多数据" />
<ProgressBar
android:id="@+id/pg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:visibility="gone"
/>
</LinearLayout>
可以看到是一个按钮和一个进度条。因为只做一个演示,这里简单处理,通过设置控件的visibility,未加载时显示按钮,加载时就显示进度条。
写一个item.xml,大家应该很熟悉了。用来定义listview的每个item的视图。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_title"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
/>
<TextView
android:textSize="12sp"
android:id="@+id/tv_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
/>
</LinearLayout>
main.xml就不贴了,整个主界面就一个listview。
直接先看下Activity的代码,在里面实现分页效果。
package com.notice.moredate;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class MoreDateListActivity extends Activity implements OnScrollListener {
// ListView的Adapter
private SimpleAdapter mSimpleAdapter;
private ListView lv;
private Button bt;
private ProgressBar pg;
private ArrayList<HashMap<String,String>> list;
// ListView底部View
private View moreView;
private Handler handler;
// 设置一个最大的数据条数,超过即不再加载
private int MaxDateNum;
// 最后可见条目的索引
private int lastVisibleIndex;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MaxDateNum = 22; // 设置最大数据条数
lv = (ListView) findViewById(R.id.lv);
// 实例化底部布局
moreView = getLayoutInflater().inflate(R.layout.moredate, null);
bt = (Button) moreView.findViewById(R.id.bt_load);
pg = (ProgressBar) moreView.findViewById(R.id.pg);
handler = new Handler();
// 用map来装载数据,初始化10条数据
list = new ArrayList<HashMap<String,String>>();
for (int i = 0; i < 10; i++) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("ItemTitle", "第" + i + "行标题");
map.put("ItemText", "第" + i + "行内容");
list.add(map);
}
// 实例化SimpleAdapter
mSimpleAdapter = new SimpleAdapter(this, list, R.layout.item,
new String[] { "ItemTitle", "ItemText" },
new int[] { R.id.tv_title, R.id.tv_content });
// 加上底部View,注意要放在setAdapter方法前
lv.addFooterView(moreView);
lv.setAdapter(mSimpleAdapter);
// 绑定监听器
lv.setOnScrollListener(this);
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pg.setVisibility(View.VISIBLE);// 将进度条可见
bt.setVisibility(View.GONE);// 按钮不可见
handler.postDelayed(new Runnable() {
@Override
public void run() {
loadMoreDate();// 加载更多数据
bt.setVisibility(View.VISIBLE);
pg.setVisibility(View.GONE);
mSimpleAdapter.notifyDataSetChanged();// 通知listView刷新数据
}
}, 2000);
}
});
}
private void loadMoreDate() {
int count = mSimpleAdapter.getCount();
if (count + 5 < MaxDateNum) {
// 每次加载5条
for (int i = count; i < count + 5; i++) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("ItemTitle", "新增第" + i + "行标题");
map.put("ItemText", "新增第" + i + "行内容");
list.add(map);
}
} else {
// 数据已经不足5条
for (int i = count; i < MaxDateNum; i++) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("ItemTitle", "新增第" + i + "行标题");
map.put("ItemText", "新增第" + i + "行内容");
list.add(map);
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// 计算最后可见条目的索引
lastVisibleIndex = firstVisibleItem + visibleItemCount - 1;
// 所有的条目已经和最大条数相等,则移除底部的View
if (totalItemCount == MaxDateNum + 1) {
lv.removeFooterView(moreView);
Toast.makeText(this, "数据全部加载完成,没有更多数据!", Toast.LENGTH_LONG).show();
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// 滑到底部后自动加载,判断listview已经停止滚动并且最后可视的条目等于adapter的条目
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE
&& lastVisibleIndex == mSimpleAdapter.getCount()) {
// 当滑到底部时自动加载
// pg.setVisibility(View.VISIBLE);
// bt.setVisibility(View.GONE);
// handler.postDelayed(new Runnable() {
//
// @Override
// public void run() {
// loadMoreDate();
// bt.setVisibility(View.VISIBLE);
// pg.setVisibility(View.GONE);
// mSimpleAdapter.notifyDataSetChanged();
// }
//
// }, 2000);
}
}
}
Ⅳ Android 分页加载(paging)断网重连,重新加载的解决方案
最近在使用Android官方提供的paging组件进行分页功能的时候,遇到了一个问题。首先,paging每次显示一页的数据,下滑到一定程度以后发送第二次取数据的api,以此达到分页的效果。
当我们第一次显示成功以后,断开网络,然后划到底部。这个时候,发送API失败了。重新链接以后,再往下滑动,也不会有任何反应。这显然跟我们实际体验是有区别的。下面说一下具体的方法。
具体例子可以参考谷歌github上 例子
这里贴一个关于描述paging使用的文章,我觉得非常好,可以看一下,我这里不详细说了。 https://juejin.im/entry/5b0d3b0251882532321468ff
主要分三个部分
DataSource
PageList
PageListAdapter
其中,DataSource是负责处理分页。
核心是 三个方法
paging在向下滑动的过程中,到达指定的位置以后,会执行loadAfter,来获取下一页的数据。但是这个处理只会执行一次,这就是为什么断网以后,重连以后,再滑动也不会有反应了。
通过上面的分析的原因,我们知道了原因是获取下一页的数据只会执行一次,那么我们对应的方法也就很好理解了,我们在需要的时候,再执行一次loadAfter就可以达到我们需要的效果了。
我这边,是在recyclerview滑动到最底部的时候,重新执行loadAfter
DataSource
重新执行的方法
核心部分在retry。当我们发送API失败以后,retry保存当前失败的API处理操作。我们在需要的时候,去调用 retryAllFailed() 方法,重新执行这次的API
顺便一说,这里用到的是携程发送API,如果在retry的过程中,不用 GlobalScope.launch 的话,可能会阻塞主线程,导致卡顿。
Ⅵ android开发,txt文件阅读器将.txt文件分页显示。
楼上楼下全是扯淡回答。。。大文本的情况下全部颠覆。。。网上没有一个真正实用有效的阅读器代码。首先,文本分页,U以为想分就分啊?文本多,分了半分钟没分完,用户缩放文本,是从头分页还是从这里分页?从当前位置分页,那往前分页呢?而且,一页的字数,不是定多少就真的那么多:100个换行符和普通字符能一样占一个页面?问题多着呢。
Ⅶ android编程:读取txt格式文件时怎样实现分页显示
ing 来是不行的。。要考虑大文件,50MB 的txt ,你不能先读完吧,先思考,搜索一下前辈怎么做的。
想好流程和方法后,再开始写,可以纸上画画,写之前去想的时间比开始写到写好时间长的时候,就对了,虽然基本不现实,大概就那个意思
简述一种做法:
得到txt file path
使用InputStream 类来读文件,返回一个byte[] ,读多少?--只要当前一屏幕的内容
然后获取文件编码格式 byte[] 转换为String : 例如new String(byte[] buffer, "UTF-8");
然后吧String 画出来,不是TextView 显示出来,是View 或者SurfaceView 去画出来,1个字1个字,或者一行一行,draw()出来
好了,这就是一种做法,利用InputStream 类读文件可以设置开始读的位置,读多少,来翻页(重复上诉过程,再画一屏幕)
你要学的还很多。
Ⅷ android中的listview怎样实现分页显示
给你个思路哈,布局的时候一个listview,下面添加上一页下一页按钮,比如每页显示10页,那么对于数据的处理,可以通过AsyncTask或者Thread异步获取数据并更新listview绑定的数据集,之后通过listview的adapter自带的notifyDataSetChanged来更新视图,对于数据的处理,说说我能想到的两种方式吧
每次只获取1页的数据(通过sql语句可控)并记住数据的编号,之后每次点击上一页或者下一页都重新获取并更新
获取所有的数据,每次显示一部分。
这就是我粗浅的方案了啊,希望对你有帮助哦~如果有更靠谱的方案记得要分享哈。
Ⅸ android listview 分页显示加载第二页之后怎么是从第一条开始显示的
你要显示的数据应该是保存在一个List集合里的,只需要把新查询出的数据加入到原本数据的集合中,在调用adapter.notifyDataSetChange()方法就可以了。
估计你是用第二页的数据替换带第一页的数据了或是把第二页的数据放到集合前面了。