滚动时,RecyclerView失去了其项目位置

时间:2018-12-04 05:51:43

标签: android scroll recycler-adapter recycle

我目前正在为我的项目实施RecyclerView。在RecyclerView上设置项目并滚动时,我失去了位置。

我使用“某些”和“其他”条件来单击并更改文本的颜色,但是当我不滚动RecyclerView项时,它会更改。 请给我建议正确的方法来处理这种情况。

adapter.setOnItemClickListner(new LoadVehicleTypeAdapter.setOnitemclick() {
@Override
public void ImageClick(int position, String Name,String Description,int id) {
    LinearLayout linearLayout = null;
    CustomTextView customTextView = null;
    try {
        for (int i = 0; i < messages.size(); i++) {
            linearLayout = (LinearLayout) rvVehicleTypes.getChildAt(i).findViewById(R.id.root1);
            customTextView = (CustomTextView) rvVehicleTypes.getChildAt(i).findViewById(R.id.frag_cartypes_inflated_name);
            if (i==position) {
                linearLayout.setBackgroundColor(Color.parseColor("#999999"));
                customTextView.setTextColor(Color.parseColor("#FFFFFF"));


            } else {
                linearLayout.setBackgroundColor(Color.parseColor("#f3f3f3"));
                customTextView.setTextColor(Color.parseColor("#2196F3"));
            }
        }
        //Toast.makeText(getActivity(),Name, Toast.LENGTH_SHORT).show();
    }
    catch (Exception e)
    {

    }
}

});

2 个答案:

答案 0 :(得分:0)

似乎您是Android开发领域的新手,基于这个假设,我将带您逐步完成ListView到RecyclerView的旅程。

ListView,我们习惯于遵循ViewHolder模式来管理滚动列表视图时回收的项目。

现在,RecyclerView具有内置的功能,而不是内置的,但是您必须强制实现它,我说的是onCreateViewHolderonBindViewHolder

因此,现在让我们进一步了解它是如何工作的,一旦您开始向下滚动列表,膨胀的项目视图就会开始被回收,而先前膨胀的ViewHolder(实际上是在onCreateViewHolder中创建的)将被重用。

现在要解决此问题,您必须记住这个位置,对于我们大多数人过去使用SparseBooleanArray

答案 1 :(得分:0)

请阅读RecyclerView的文档。另外,我鼓励您阅读ListViewRecyclerView

之间的区别

您使用的是RecyclerView还是ListView?从您的代码看来,您正在使用ListView

如果您想使用RecyclerView,请阅读教程。

请完成this教程。它将告诉您如何使用RecyclerView。 对于点击监听器,请遵循this教程。