相关文章推荐
list = new ArrayList < > ( ) ; for ( int i = 0 ; i < 10 ; i ++ ) { list . add ( String . valueOf ( i ) ) ; recyclerview_list = findViewById ( R . id . recyclerview_list ) ; recyclerview_list . setLayoutManager ( new CardManager ( this ) ) ; mAdapter = new CardAdapter ( list ) ; //重点这行 recyclerview_list . setAdapter ( mAdapter ) ;
  1. 然后我在回调方法中去remove list集合中的数据
       //MainActivity
        if (list != null && list.size() != 0) {
            list.remove(position);
            mAdapter.notifyDataSetChanged();
  1. 我把数据传给了adapter,按理说应该去adapter里操作apapter中接收到的list(mCardBeenList)才有效果,对吧?
	//CardAdapter
    private List mCardBeenList;
    private Context mContext;
    public CardAdapter(List cardBeenList) {
        mCardBeenList = cardBeenList;
  1. 重点来了,我在MainActivity中操作list,CardAdapter的mCardBeenList,就会自己变化。
  2. 查了资料(https://www.cnblogs.com/sinjin/articles/11250803.html),
  3. 大概意思是list不重新new,就可以。
  4. 那么这个问题也就解答了:我们只是将list传给CardAdapter,在CardAdapter里并没有重新new对象,实际上还指向的是MainActivity中new出来的那个list内存地址
  5. 而CardAdapter中的 mCardBeenList 只是从那个内存地址里取数据,所以会相应的改变。
  6. 突然想起了C语言,让我泪流满面啊。。。
今天遇到这样一个问题:在MainActivity中,我正常使用recyclerview,并传入new好的list数据集给adapter。 //MainActivity list = new ArrayList&lt;&gt;(); for (int i = 0; i &lt; 10; i++) { list.add(String.valueOf(i)); } recyclerview_list = findViewByI.
先上效果图:RecyclerView简介:RecyclerView用以下两种方式简化了数据的展示和处理: 1. 使用LayoutManager来确定每一个item的排列方式。 2. 为增加和删除项目提供默认的动画效果,也可以自定义。RecyclerView项目结构如下: Adapter:使用RecyclerView之前,你需要一个继承自RecyclerView.Adapter的适配器
最近在开发一个简单的安卓app。有很长一段间没用安卓了,引入jetpack之后开发变化很大。在参考了google自己出的RecycleView教程之后,满以为可以使用RecycleView不会出现什么问题了。 想不到该来的还是来了。话说一番操作之后做了一个扫描连接设备的界面,但是发生了一下奇怪的事情。 按下刷新按钮,RecycleView不出现任何新的item。但是如果我按一下editText的框,然后就出现了。为了便于理解问题的根源,我想简单交代一下目前更新RecycleView的方法。
@Subscribe public void onReceiveClasses(ClassEvent classEvent) { // this.classEntities = classEvent.classEntities;//直接重新赋值是行不通的,因为引用的问题,需要通过后面这样的方式来进行 this.classEntities.clear();
目录1 前言2 正文2.1 基本使用2.2 问题解决3 最后 在查看 google 的开源项目 sunflower 看到使用到了 ListAdapter,开始以为是之前对应 ListView 的那个 ListAdapter,实际上是 recyclerview 库里提供的。自己也就跟着使用到了项目中。当然,经历了一些问题后,才比较好地掌握了 ListAdapter 的正确使用方法。 本文主要会回答如下的问题: 为什么提供同样引用的集合给 ListAdapter后,没有任何反映? 为什么使用 Li
RecyclerView.Adapter代码可以根据具体需求进行编写,以下是一个简单的示例: public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> mData; public MyAdapter(List<String> data) { mData = data; @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false); return new ViewHolder(view); @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.mTextView.setText(mData.get(position)); @Override public int getItemCount() { return mData.size(); public static class ViewHolder extends RecyclerView.ViewHolder { public TextView mTextView; public ViewHolder(View itemView) { super(itemView); mTextView = itemView.findViewById(R.id.text_view); 这个示例中,我们定义了一个 MyAdapter 类,它继承自 RecyclerView.Adapter,并且泛型参数为 ViewHolder。在构造函数中,我们传入了一个 List<String> 类型的数据,这个数据将会在 RecyclerView 中显示。 在 onCreateViewHolder 方法中,我们通过 LayoutInflater 来加载 item_layout 布局文件,并返回一个 ViewHolder 对象。 在 onBindViewHolder 方法中,我们将数据绑定到 ViewHolder 中的 TextView 上。 在 getItemCount 方法中,我们返回数据的数量。 最后,我们定义了一个 ViewHolder 类,它包含一个 TextView 对象,用于显示数据。
 
推荐文章