gpt4 book ai didi

android - 当用户向下滚动到列表末尾时,如何在 Cwac-Endlessadapter 中设置加载列表项的限制

转载 作者:行者123 更新时间:2023-11-29 18:01:00 27 4
gpt4 key购买 nike

例如:- 如果我加载列表中的前 5 个项目,然后在向下滚动时加载下五个项目

因为它是一个无穷无尽的适配器,所以这个过程必须不断重复这就是我尝试的方式 -->foliowing 是我的 demoadapter 代码:-

   public class MyDemoAdapter extends EndlessAdapter {

private static int cutting_int =5;
public static int batch_repeat = 0;
public int check_batch = 0;
private Context mcontxt;
private RotateAnimation rotate = null;
ArrayList<DownloadOffersClass> tempList = new ArrayList<DownloadOffersClass>();
private static int mLastOffset = 0;
private ArrayList<DownloadOffersClass> list = new ArrayList<DownloadOffersClass>();
private int LIST_SIZE;


public MyDemoAdapter(Context context, int textViewResourceId,
ArrayList<DownloadOffersClass> list, int lIST_SIZE) {
super(new DownloadedOffersAdapter(context,
R.layout.offer_listview_item, list));
this.mcontxt = context;
this.list = list;
this.LIST_SIZE = lIST_SIZE;
rotate = new RotateAnimation(0f, 360f, Animation.RELATIVE_TO_SELF,
0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotate.setDuration(600);
rotate.setRepeatMode(Animation.RESTART);
rotate.setRepeatCount(Animation.INFINITE);
}

@Override
protected View getPendingView(ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) mcontxt
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View row = inflater.inflate(R.layout.row, null);

View child = row.findViewById(android.R.id.text1);

child.setVisibility(View.GONE);

child = row.findViewById(R.id.throbber);
child.setVisibility(View.VISIBLE);
child.startAnimation(rotate);

return (row);
}

@Override
protected boolean cacheInBackground() {
SystemClock.sleep(2000);

if (check_batch != batch_repeat) {
tempList.clear();
int lastOffset = getLastOffset();
if (lastOffset < LIST_SIZE) {
int limit = lastOffset + cutting_int;
for (int i = (lastOffset + 1); (i <= limit && i < LIST_SIZE); i++) {
tempList.add(list.get(i));
}
setLastOffset(limit);

if (limit < 50) {
return true;
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
}

@Override
protected void appendCachedData() {
if (getWrappedAdapter().getCount() < 50) {
@SuppressWarnings("unchecked")
DownloadedOffersAdapter a = (DownloadedOffersAdapter) getWrappedAdapter();

check_batch = check_batch + 1;
Log.v("Check", " " + check_batch);
for (int i = cutting_int; i < cutting_int + cutting_int; i++) {
a.add(list.get(i));
}
}
}

public static void setLastOffset(int i) {
mLastOffset = i;
}

private int getLastOffset() {
return mLastOffset;
}

最佳答案

修改你的cacheInBackground()

if (check_batch != batch_repeat) {
tempList.clear();
int lastOffset = getLastOffset();
if (lastOffset < LIST_SIZE) {
int limit = lastOffset + cutting_int;
for (int i = (lastOffset + 1); (i <= limit && i < LIST_SIZE); i++) {
tempList.add(list.get(i));
}
setLastOffset(limit);

if (limit <= 50) {
return true;
} else {
return false;
}
} else {
return false;
}
} else {
if (!firstTry) {// use this boolean to do it only once
tempList.clear();
int notDivisible = LIST_SIZE % cutting_int;
if (!(notDivisible == 0)) {
firstTry = true;
return true;
} else {
return false;
}
}
return false;
}

并用这个替换你的 appendCachedData() 方法:

  protected void appendCachedData() {

DownloadedOffersAdapter a = (DownloadedOffersAdapter) getWrappedAdapter();
if (check_batch != batch_repeat) {
if (getWrappedAdapter().getCount() <= 50) {
check_batch = check_batch + 1;
Log.v("Check", "append chk_batch " + check_batch);
for (int i = cutting_int; i < cutting_int + cutting_int; i++) {
a.add(list.get(i));
}
}
} else {// Append extra entries to list i.e less than cutting_int
int notDivisible = LIST_SIZE % cutting_int;
for (int i = (LIST_SIZE - notDivisible); i < LIST_SIZE - 1; i++) {
a.add(list.get(i));
}
return;
}
}

关于android - 当用户向下滚动到列表末尾时,如何在 Cwac-Endlessadapter 中设置加载列表项的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16102589/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com