相关疑难解决方法(0)

RecyclerView滚动性能

我基于创建列表和卡片指南创建了RecyclerView示例.我的适配器只有一个模式实现来扩展布局.

问题是滚动性能差.这在RecycleView中只有8个项目.

在一些测试中我验证了在Android L中没有出现这个问题.但在KitKat版本中,性能的下降是显而易见的.

java performance android recycler-adapter android-recyclerview

68
推荐指数
6
解决办法
5万
查看次数

RecyclerView 正在复制项目

当我滚动它时,我的 recyclerview 正在复制项目并且我已经在调用adapter.notifyDataSetChanged().

所以,可能我在错误的地方调用了数据集更新,但我找不到它是如何工作的。

这是一些代码:

       RecyclerView packageRecyclerView;
        Intent intent;
        ChecklistAdapter recyclerViewAdapter;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_checklist);
    
            intent = getIntent();
            size = intent.getIntExtra("size", 0);
            Log.d(TAG, "onCreate - Qtd Questões: " + size);
    
            packageRecyclerView = findViewById(R.id.package_lst);
    
            LinearLayoutManager recyclerLayoutManager = new LinearLayoutManager(this);
            packageRecyclerView.setLayoutManager(recyclerLayoutManager);
    
            DividerItemDecoration dividerItemDecoration =
                    new DividerItemDecoration(packageRecyclerView.getContext(),
                            recyclerLayoutManager.getOrientation());
            packageRecyclerView.addItemDecoration(dividerItemDecoration);
    
            List<Checklist> modelList = new ArrayList<>();
            recyclerViewAdapter = new ChecklistAdapter(modelList,this);
            modelList = getPackages();
            recyclerViewAdapter = new ChecklistAdapter(modelList,this);
    
    //        recyclerViewAdapter = new ChecklistAdapter(getPackages(),this);
    
            packageRecyclerView.setAdapter(recyclerViewAdapter);
    
    
        }
    
        private List<Checklist> getPackages() { …
Run Code Online (Sandbox Code Playgroud)

android notifydatasetchanged android-recyclerview

10
推荐指数
3
解决办法
1万
查看次数

java.lang.IllegalStateException:两个不同的 ViewHolder 具有相同的稳定 ID

我的应用程序中出现以下错误:

java.lang.IllegalStateException: Two different ViewHolders have the same stable ID. Stable IDs in your adapter MUST BE unique and SHOULD NOT change.
ViewHolder 1:ViewHolder{c7b44d1 position=5 id=3, oldPos=-1, pLpos:-1 not recyclable(1)} 
View Holder 2:ViewHolder{67232f6 position=3 id=3, oldPos=-1, pLpos:-1}
Run Code Online (Sandbox Code Playgroud)

我正在使用 Mike @github 的 MaterialDrawer,这是我的视图示例:

public class FavoritesViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

TextView Title;
ImageView Pic;

public FavoritesViewHolder(View itemView) {
    super(itemView);
    itemView.setOnClickListener(this);
    Title = (TextView) itemView.findViewById(R.id.textViewHighlight);
    Pic = (ImageView) itemView.findViewById(R.id.imageViewHighlight);

   }
}
Run Code Online (Sandbox Code Playgroud)

两个片段正在切换它们的布局,当我按下第一个片段时,它加载没有任何问题,当我按下第二个片段时,它加载不同的布局和 FC 本身。

两个片段使用相同的 ViewHolder 代码,但在不同的类中。

java android android-fragments

5
推荐指数
1
解决办法
6661
查看次数