As ViewHolder is redesigned by RecyclerView. You need to make sure that you maintain stability between the "current game" and the item listed. Despite this, I think your decision is in order.
Here's the fix for this:
@Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.game = mGameList.get(position); if (needsUpdate) { holder.startRepeatingTask(); } else { holder.stopRepeatingTask(); } } class MyViewHolder extends RecyclerView.ViewHolder { private final int mHandlerInterval = 6000; private Handler mHandler; private Runnable mStatusChecker; public Game game; public MyViewHolder(View itemView) { super(itemView); ButterKnife.inject(this, itemView); mHandler = new Handler(); mStatusChecker = new Runnable() { @Override public void run() { String gameStatusToPrint = game.getGameStatusToPrint(); gameStatus.setText(gameStatusToPrint); mHandler.postDelayed(mStatusChecker, mHandlerInterval); } }; } public void startRepeatingTask() { mStatusChecker.run(); }
mmark source share