2016-09-29 4 views
2

私はRelativeLayoutを持っているRecyclerViewを使用しています。そのRelativeLayoutでは、私は2 TextViewを持っています。最初のTextViewには、2番目のTextViewを右または左に揃えなければならないかどうかを決定する値があります。レイアウトパラメータをプログラムで設定するrecyclerviewのアイテム

私は以下のコードを使用LayoutParamsRecyclerViewでアダプタを設定している:

if (listItem.getmLikeCount() > 0) { 
    RelativeLayout.LayoutParams feedCommentParams = new RelativeLayout.LayoutParams(
     RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    feedCommentParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE); 
    listItemHolder.mCommentCount.setLayoutParams(feedCommentParams); 
} else { 
    listItemHolder.mLikeCount.setVisibility(View.GONE); 
    RelativeLayout.LayoutParams feedCommentParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    feedCommentParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, 0); 
    listItemHolder.mCommentCount.setLayoutParams(feedCommentParams); 
} 

をしかしRecyclerView項目のいずれかが、他のすべての項目もに整列され、その後どのcountを持っていない場合の項目、すなわちリサイクルなっています左。

count > 0他の場合はコメント数を左に表示すると、コメント数を右に表示します。

+0

、アンドロイドを使用します。layout_alignWithParentIfMissing =「true」がXMLには、XMLからのみ – Vickyexpert

+0

を管理したり、怠惰にしてちょうど2つの異なる「TextViewsを作成します。別々のアラインメントで。 – Alpha

答えて

2

この問題は、2つの別々に整列されたTextViewで簡単に解決できます。コメント数に基づいて、可視性をGONEまたはVISIBLEに設定できます。

とにかく、ifとelseのような文の中にrequestLayoutを呼び出すことをお勧めします。要件は、この小さな一であれば、なぜあなたはコードでそれをやろうとしている

if (listItem.getmLikeCount() > 0) { 
    RelativeLayout.LayoutParams feedCommentParams = new RelativeLayout.LayoutParams(
     RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    feedCommentParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE); 
    listItemHolder.mCommentCount.setLayoutParams(feedCommentParams); 

    // Call requestLayout here 

} else { 
    listItemHolder.mLikeCount.setVisibility(View.GONE); 
    RelativeLayout.LayoutParams feedCommentParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    feedCommentParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, 0); 
    listItemHolder.mCommentCount.setLayoutParams(feedCommentParams); 

    // Call requestLayout here for the else part. 

} 
+0

答えをいただきありがとうございます。上記のコードのelse部分に//ここでrequestLayoutを呼び出して、何を書くべきか教えてください。 –

関連する問題