滚动时不添加图像的RecylerView滞后

时间:2018-06-29 11:20:56

标签: android

我使用以下适配器添加了RecyclerView,并且未使用任何图像设置器。它可以正确设置项目,但在滚动时会滞后。我在另一个活动中使用了几乎相同的适配器,但是它可以克服任何延迟

公共类TableAdapter扩展了RecyclerView.Adapter {

private List<ItemTableClass> items;
Context mContext;


public class MyViewHolder extends RecyclerView.ViewHolder {
    ImageView imageView;
    TextView teams, groups, wins, looses, draws, points, plays, differences;

    public MyViewHolder(View itemView) {
        super(itemView);
        init();

    }

    private void init() {

        imageView = itemView.findViewById(R.id.flagImg);
        teams = itemView.findViewById(R.id.teamName);
        groups = itemView.findViewById(R.id.groups);
        wins = itemView.findViewById(R.id.wins);
        looses = itemView.findViewById(R.id.looses);
        draws = itemView.findViewById(R.id.draws);
        points = itemView.findViewById(R.id.points);
        plays = itemView.findViewById(R.id.plays);
        differences = itemView.findViewById(R.id.difference);
    }
}

public TableAdapter(List<ItemTableClass> items, Context mContext) {
    this.items = items;
    this.mContext = mContext;
}

@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.table_item, parent, false);

    return new MyViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int 
    ItemTableClass itemTableClass = items.get(position);

    holder.differences.setText(itemTableClass.
    holder.groups.setText(itemTableClass.
    holder.teams.setText(itemTableClass.
    holder.draws.setText(itemTableClass.
    holder.looses.setText(itemTableClass.
    holder.plays.setText(itemTableClass.getPlays());    
    holder.points.setText(itemTableClass.getPoints());
    holder.wins.setText(itemTableClass.getWins());
}


@Override
public int getItemCount() {
    return items.size();
}

}

4 个答案:

答案 0 :(得分:0)

在适配器中添加这两种方法,然后尝试一下。

 @Override
 public long getItemId(int position) {
     return position;
 }

 @Override
 public int getItemViewType(int position) {
     return position;
 }

答案 1 :(得分:0)

无法发表评论,所以要在答案中发表。

Pl共享R.layout.table_item以查看其中是否存在任何复杂性。还要共享ItemTableClass,以便我们可以了解您的getter方法中是否正在进行大量计算。

这不是您问题的直接答案,但您可以在扩大版面时使用mContext代替parent.getContext()

答案 2 :(得分:0)

无法发表评论,所以要在答案中发表。

Pl共享R.layout.table_item以查看它是否包含任何复杂性。还要共享ItemTableClass,以便我们可以了解您的getter方法中是否正在进行大量计算。

这不是您问题的直接答案,但是您在扩大版面时可以使用mContext而不是parent.getContext()

答案 3 :(得分:0)

如果您有一个太多视图的复杂列表项试图摆脱大多数视图,并且当用户单击列表项时,打开一个新活动,其中包含该项目的更多详细信息,其中包含所有所需的视图,则可能会发生这种情况