2017-01-05 13 views
1

いくつかの条件に基づいて表示されるいくつかのイメージを含むRecyclerViewアイテムがJava上にあります。しかし、条件のほとんどが満たされていると、多くの画像が表示され、親のレイアウトから外れてしまうことに気付きました。 What's happening VS Expectation3つのビューを表示し、条件に基づいて他のものを非表示にします。

作業コードは例えば、RecyclerView内の各画像のために簡単です:

以下は私の意図は、この目的のためにある方法を示しただし

if (iJobType == 1) { 
imageView1.setVisibility(View.VISIBLE) 
} else { 
imageView1.setVisibility(View.GONE) 
}  

if (iJobType == 2) { 
imageView2.setVisibility(View.VISIBLE) 
} else { 
imageView2.setVisibility(View.GONE) 
} 

、私はわからないものに3つの条件が満たされると3つの画像しか表示されません。与えられたiJobTypeが1,2,3,4,5,6であるとしましょう。そのような条件に基づいて6枚の画像が表示されますが、今は3枚の画像が必要です。

私はそれが十分にはっきりしていることを願って、これをより良く理解するためにコメントを残しておきましょう。乾杯!私はこのような場合にはどうなるのか

+1

あなたの画像の幅と画面の幅を確認する必要があります。 like ..setVisibility(Visible)のすべての設定でoccupiedSpace変数を増やし、使用可能な合計でチェックします。そのようなもの – Farhan

+0

@ファハンそれは実際には理にかなっています!提案していただきありがとうございます! –

+0

おそらく可視性が最良の選択肢ではないかもしれません。使用可能なスペースに応じてgetItemCount()を増やしてください。したがって、アダプタはスペースがある場合にのみbindViewHolder(VHホルダ、int位置)を呼び出します –

答えて

0

は次のとおりです。

まず私は、アダプタクラスで使用されているオブジェクトのクラスのゲッターセッターブールisConditionmeetを作成します。

private ArrayList<MyObject> list; 

とObjectクラス:リストは次のようにアダプタクラスで使用されている条件が項目を表示するために会うたび

public class MyObject 
{ 
    private boolean conditionMeet; 

    public boolean isconditionMeet() 
    { 
    return conditionMeet; 
    } 

    public void setconditionMeet(boolean conditionMeet) 
    { 
    this.conditionMeet = conditionMeet; 
    } 
} 

今、私は、そのアイテムのsetconditionMeet(true)を設定し、conditionMeetはfalseです他のアイテムのために。最後に、UIの変更を取得するためにアダプタを更新します。

関連する問題