android 不滚动列表,Android 滑动列表

大致思路:1.有一个数据管理器,用来加载和保存我们需要用到的图片;

2.建立一个基本的xml文件,由于我们需要的是 一个图片后接文字的样式,所以我们在次文件中中加入一个ImageView 和 TextView (我们在这里先设置一下基本的数据比如颜色和默认文字等等,以便于我们调试;

3.自定义一个控件,设置好适配器。我把此处的代码贴上:

public class ZDWLIstView extends ListView {

public ZDWLIstView(Context context) {

super(context);

initData();

}

public ZDWLIstView(Context context, AttributeSet attrs) {

super(context, attrs);

initData();

}

private void initData(){//设置适配器

setAdapter(new MyAdapter());

}

private class MyAdapter extends BaseAdapter {

@Override

public int getCount() {

return DataManager.shareManeger.getDataSource().size();

}

@Override

public Object getItem(int i) {

return DataManager.shareManeger.getDataSource().get(i);

}

@Override

public long getItemId(int i) {

return 0;

}

@Override

public View getView(int i, View view, ViewGroup viewGroup) {

ViewGroup v=(ViewGroup)View.inflate(getContext(),R.layout.qq,null);

这里的qq就是我们第二部设置的xml文件,我们为了获取它内部的控件,我们将他转换为ViewGroup类型,

//获取子视图

ImageView icon=v.findViewWithTag(getResources().getString(R.string.iconTag));

System.out.println();

TextView name=v.findViewWithTag(getResources().getString(R.string.nameTag));

//获取数据模型

FriendModel model=DataManager.shareManeger.getDataSource().get(i);

icon.setImageResource(model.icon);

name.setText(model.name);

return v;

}

}

}

3.以上我们就设置好了我们自己需要的View空间了,我们只需要在Activity_main_xml中加入我的自定义控件就好了

a81c7442258c

image.png

关于单例设计模式的步骤:

1.禁用构造方法,我们采取的将构造方法私有化。

2.在该类中设置静态变量,实现其构造方法,这样就可以了。

(待完善)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现 Android 列表无限滚动的方法如下: 1. 实现一个继承自 RecyclerView.Adapter 的适配器类,重写 getItemViewType() 方法,根据当前位置返回不同的 ViewType。 2. 在 RecyclerView 的 LayoutManager 中重写 generateDefaultLayoutParams() 方法,设置高度为 WRAP_CONTENT。 3. 在 RecyclerView 的 OnScrollListener 中监听滚动事件,当滑动列表底部时,加载更多数据并刷新列表。 具体代码实现可以参考以下示例: ``` public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private static final int TYPE_ITEM = 0; private static final int TYPE_LOADING = 1; private List<Item> mItemList; private boolean mIsLoading = false; public MyAdapter(List<Item> itemList) { mItemList = itemList; } @Override public int getItemViewType(int position) { return position < mItemList.size() ? TYPE_ITEM : TYPE_LOADING; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == TYPE_ITEM) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false); return new ItemViewHolder(view); } else { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.loading_layout, parent, false); return new LoadingViewHolder(view); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder instanceof ItemViewHolder) { ItemViewHolder itemViewHolder = (ItemViewHolder) holder; Item item = mItemList.get(position); // 绑定数据到 ItemViewHolder } else { LoadingViewHolder loadingViewHolder = (LoadingViewHolder) holder; // 显示正在加载的视图 } } @Override public int getItemCount() { return mItemList.size() + (mIsLoading ? 1 : 0); } public void setLoading(boolean isLoading) { mIsLoading = isLoading; if (isLoading) { notifyItemInserted(getItemCount() - 1); } else { notifyItemRemoved(getItemCount() - 1); } } public static class ItemViewHolder extends RecyclerView.ViewHolder { // ItemViewHolder 中的视图 public ItemViewHolder(View itemView) { super(itemView); // 初始化 ItemViewHolder 中的视图 } } public static class LoadingViewHolder extends RecyclerView.ViewHolder { // LoadingViewHolder 中的视图 public LoadingViewHolder(View itemView) { super(itemView); // 初始化 LoadingViewHolder 中的视图 } } } public class MyLayoutManager extends LinearLayoutManager { private static final int VISIBLE_THRESHOLD = 5; private boolean mIsLoading = false; private OnLoadMoreListener mOnLoadMoreListener; public MyLayoutManager(Context context) { super(context); } public MyLayoutManager(Context context, int orientation, boolean reverseLayout) { super(context, orientation, reverseLayout); } public void setOnLoadMoreListener(OnLoadMoreListener listener) { mOnLoadMoreListener = listener; } public void setLoading(boolean isLoading) { mIsLoading = isLoading; } @Override public RecyclerView.LayoutParams generateDefaultLayoutParams() { return new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); } @Override public void onScrolled(int dx, int dy) { super.onScrolled(dx, dy); if (!mIsLoading && getItemCount() - getChildCount() <= findFirstVisibleItemPosition() + VISIBLE_THRESHOLD) { setLoading(true); if (mOnLoadMoreListener != null) { mOnLoadMoreListener.onLoadMore(); } } } public interface OnLoadMoreListener { void onLoadMore(); } } public class MyActivity extends AppCompatActivity { private RecyclerView mRecyclerView; private MyAdapter mAdapter; private MyLayoutManager mLayoutManager; private List<Item> mItemList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_layout); mRecyclerView = findViewById(R.id.recycler_view); mAdapter = new MyAdapter(mItemList); mRecyclerView.setAdapter(mAdapter); mLayoutManager = new MyLayoutManager(this); mRecyclerView.setLayoutManager(mLayoutManager); mLayoutManager.setOnLoadMoreListener(new MyLayoutManager.OnLoadMoreListener() { @Override public void onLoadMore() { // 加载更多数据 mAdapter.setLoading(false); } }); // 初始加载数据 mAdapter.notifyDataSetChanged(); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值