2017-09-23 11 views
1

私のデータセットの要素はuserIdです。ポジションのuserIdが前のポジションのuserIdと等しい場合は、TextViewGONEに設定されているかどうかを確認したいと思います。recyclerview Androidの位置に基づいてレイアウトの要素を動的に変更する方法は?

私はonBindViewHolderで、これまでに試した何

final Item item = itemsArray.get(position); 

if(position - 1 > -1){ 
    if(items.get(position-1).getUserId() == item.getUserId()) { 
     holder.username.setVisibility(View.GONE); 
    } 
} 

しかし、アイテムの一部を終わる同じuserIdとのusernamegoneですが、そのうちのいくつかは、前の位置のと同じではありませんどのuserIduserIdusernamegoneです。

明確にするために、私が欲しいものをはっきりと示すためにイメージを添付します。

は、これは私が欲しいものです:あなたは別のuserIditemを見るように

enter image description here

しかし、結局は、それは、画像の下のようになる、usernameも ​​`なくなって。

enter image description here

だから、私の質問は、私は前の項目のuserIdは、現在位置のuserIdと同じであるので、それは文句を言わない私が取り付けられた第2の画像に終わるチェックすることができるか、です。

その他の解決策がある場合は、私にも知らせてください。事前に感謝します。

+0

はあなたのユーザーIDは文字列型ですか? –

+0

は 'int'型です。 – ken

+0

" holder.username "のelse条件ロジックを追加しようとします。 –

答えて

1

使用このコード

final Item item = itemsArray.get(position); 
holder.username.setVisibility(View.VISIBLE); 
if(position - 1 > -1){ 
    if(items.get(position-1).getUserId() == item.getUserId()) { 
    holder.username.setVisibility(View.GONE); 
    }else{ 
    holder.username.setVisibility(View.VISIBLE); 
    } 
} 

あなたが「GONE」さholder.username状態だRecyclerViewので、いくつかのビューを使用していたように再利用されます。

+0

答えが更新できますか?答えにelseロジックを追加していません。 – ken

+0

このコードも動作します。それを確認してください。私の答えが正しい場合はそれを受け入れてください –

+0

それは私が付けたのと同じです。 – ken

0

アダプタのホルダーをスキャンして後で変更するのは間違った方法です。 アダプタでデータを設定する前に、データを準備する必要があります。データのモデルを変更する(たとえば、boolean isShowNameItemクラスに追加する)

関連する問題