Android 滑动加载数据

package com.ScrollListView;

import Android.app.ListActivity;
import Android.os.Bundle;
import Android.view.Gravity;
import Android.view.View;
import Android.view.ViewGroup;

import Android.widget.AbsListView;
import Android.widget.BaseAdapter;
import Android.widget.LinearLayout;
import Android.widget.ProgressBar;
import Android.widget.TextView;
import Android.widget.AbsListView.OnScrollListener;

public class EndLessActivity extends ListActivity implements OnScrollListener {

Aleph0 adapter = new Aleph0();
int mProgressStatus = 0 ;
ProgressBar progressBar;
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
LinearLayout searchLayout = new LinearLayout( this );
searchLayout.setOrientation(LinearLayout.HORIZONTAL);
progressBar = new ProgressBar( this );
progressBar.setPadding( 0 , 0 , 15 , 0 );
searchLayout.addView(progressBar, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
));
TextView textView = new TextView( this );
textView.setText( " 加载中... " );
textView.setGravity(Gravity.CENTER_VERTICAL);
searchLayout.addView(textView, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT
));
searchLayout.setGravity(Gravity.CENTER);
LinearLayout loadingLayout = new LinearLayout( this );
loadingLayout.addView(searchLayout, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
));
loadingLayout.setGravity(Gravity.CENTER);
getListView().addFooterView(loadingLayout);

setListAdapter(adapter);
getListView().setOnScrollListener( this );
}

public void onScroll(AbsListView view,
int firstVisible, int visibleCount, int totalCount) {

boolean loadMore = /* maybe add a padding */
firstVisible + visibleCount >= totalCount;

if (loadMore) {
adapter.count += visibleCount; // or any other amount
adapter.notifyDataSetChanged();
}
}

public void onScrollStateChanged(AbsListView v, int s) { }

class Aleph0 extends BaseAdapter {
int count = 40 ; /* starting amount */

public int getCount() { return count; }
public Object getItem( int pos) { return pos; }
public long getItemId( int pos) { return pos; }

public View getView( int pos, View v, ViewGroup p) {
TextView view = new TextView(EndLessActivity. this );
view.setText( " entry " + pos);
return view;
}
}


}


package com.ScrollListView;

import Android.app.ListActivity;
import Android.os.Bundle;
import Android.view.Gravity;
import Android.view.View;
import Android.view.ViewGroup;
import Android.widget.AbsListView;
import Android.widget.BaseAdapter;
import Android.widget.Button;
import Android.widget.LinearLayout;
import Android.widget.ProgressBar;
import Android.widget.TextView;
import Android.widget.AbsListView.OnScrollListener;

public class EndLessActivity extends ListActivity {

Aleph0 adapter = new Aleph0();
int mProgressStatus = 0 ;

protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
LinearLayout searchLayout = new LinearLayout( this );
searchLayout.setOrientation(LinearLayout.HORIZONTAL);

Button textView = new Button( this );
textView.setText( " 加载中... " );
textView.setGravity(Gravity.CENTER_VERTICAL);
searchLayout.addView(textView, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT
));
searchLayout.setGravity(Gravity.CENTER);
LinearLayout loadingLayout = new LinearLayout( this );
loadingLayout.addView(searchLayout, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
));
loadingLayout.setGravity(Gravity.CENTER);
getListView().addFooterView(loadingLayout);
textView.setOnClickListener( new Button.OnClickListener()
{ @Override
public void onClick(View v)
{
adapter.count += 10 ;
adapter.notifyDataSetChanged();
}
});


setListAdapter(adapter);
// getListView().setOnScrollListener(this);
}

/* public void onScroll(AbsListView view,
int firstVisible, int visibleCount, int totalCount) {

boolean loadMore =
firstVisible + visibleCount >= totalCount;

if(loadMore) {
adapter.count += visibleCount;
adapter.notifyDataSetChanged();
}
} */

public void onScrollStateChanged(AbsListView v, int s) { }

class Aleph0 extends BaseAdapter {
int count = 40 ; /* starting amount */

public int getCount() { return count; }
public Object getItem( int pos) { return pos; }
public long getItemId( int pos) { return pos; }

public View getView( int pos, View v, ViewGroup p) {
TextView view = new TextView(EndLessActivity. this );
view.setText( " entry " + pos);
return view;
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中,你可以使用RecyclerView和ViewPager来实现动态数据和横向滑动的效果。 首先,你需要在布局文件中添RecyclerView和ViewPager: ```xml <androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" /> <androidx.viewpager.widget.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="wrap_content" /> ``` 接下来,在你的Activity或Fragment中,你需要创建一个适配器来为RecyclerView和ViewPager提供数据: ```java public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> mData; public MyAdapter(List<String> data) { mData = data; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { String item = mData.get(position); holder.textView.setText(item); } @Override public int getItemCount() { return mData.size(); } public class ViewHolder extends RecyclerView.ViewHolder { public TextView textView; public ViewHolder(@NonNull View itemView) { super(itemView); textView = itemView.findViewById(R.id.textView); } } } public class MyPagerAdapter extends PagerAdapter { private List<View> mViewList; public MyPagerAdapter(List<View> viewList) { mViewList = viewList; } @Override public int getCount() { return mViewList.size(); } @Override public boolean isViewFromObject(@NonNull View view, @NonNull Object object) { return view == object; } @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { View view = mViewList.get(position); container.addView(view); return view; } @Override public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { View view = mViewList.get(position); container.removeView(view); } } ``` 接下来,在你的Activity或Fragment中,你需要初始化RecyclerView和ViewPager,并设置它们的适配器: ```java RecyclerView recyclerView = findViewById(R.id.recyclerView); ViewPager viewPager = findViewById(R.id.viewPager); // 创建数据列表 List<String> data = new ArrayList<>(); // 添数据到列表中 // 创建RecyclerView的LayoutManager LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false); recyclerView.setLayoutManager(layoutManager); // 创建RecyclerView的适配器 MyAdapter adapter = new MyAdapter(data); recyclerView.setAdapter(adapter); // 创建ViewPager的View列表 List<View> viewList = new ArrayList<>(); // 添View到列表中 // 创建ViewPager的适配器 MyPagerAdapter pagerAdapter = new MyPagerAdapter(viewList); viewPager.setAdapter(pagerAdapter); ``` 以上代码中,你需要根据你的实际需求来创建数据列表和View列表,并在适配器中处理数据绑定的逻辑。 希望以上代码对你有帮助!如果有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值