2017-08-04 15 views
0

私は、ベースアダプタのおかげで表示したいデバイスのリストを持っているAndroidプロジェクトに取り組んでいます。各デバイスにはシークバーで変更したいライトレベルがあります。私はデバイスを識別しようとした は、このようなタグでシークバー:送信データのタグが正しく動作していない

<SeekBar 
        android:id="@+id/seekBar" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:max="100" 
        android:tag="@{Integer.toString(ampoule.idx)}" /> 

をこれは私のアンプルオブジェクトである:とき私は今

<data> 
    <variable 
     name="ampoule" 
     type="com.example.****.***.containers.LightDevice" 
     /> 
</data> 

private String Type ; 
private int LevelInt; 
private String hueColor; 
private String Name; 
private int idx; 

とバインディングObjectを取得するためにbaseadapterのタグを取得しようとすると、次のエラーが発生します。

FATAL EXCEPTION: main 
                      Process: com.example.***.***, PID: 9057 
                      java.lang.NumberFormatException: Invalid int: "binding_4" 

そして、ここで私は、タグを取得する場所です:

@Override 
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
    setDimmableLevel(seekBar.getTag().toString(),progress); 
} 

private void setDimmableLevel(String idx, final int progress) { 
    Map<String, String> queryParams = new HashMap<>(); 
    Log.d("TAG", "valeur idx : "+idx); 
    final LightDevice light = LightList.getInstance().getLight(Integer.parseInt(idx)); 

エラーが私のタグ値ではなくampoule.idx値をbeeingてのbinding_4されていることである...

私が何をすべきの任意のアイデア行う?

iは、その型鋳造関連の問題を考えて、その作品のことを願って、あなたは

答えて

0

これを試してみてくださいありがとうございました。

<SeekBar 
        android:id="@+id/seekBar" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:max="100" 
        android:tag="@{String.valueof(ampoule.idx)}" /> 
+0

いいえ、まだ動作していません... –

0

綴じ手順を忘れたと思います。バインド後、Viewのタグを適切に設定する必要があります。バインディングを作成した場合は、binding.executePendingBindings()を呼び出して、次の行の前にタグ値を初期化する必要があります。それ以外の場合は、ビューが更新される前にバインド値の変更が累積されるように、次のフレームまで遅延されます。活性のために

、あなたはこのようなレイアウトを膨らませる必要があります:あなたは別の場所からそれを膨らませている場合は、静的なインフレータを使用することができます

@Override 
public void onCreate(...) { 
    super.onCreate(...); 
    MyLayoutBinding binding = DataBindingUtil.setContentView(this, R.layout.my_layout); 
    binding.setAmpoule(new LightDevice()); 
} 

。たとえば、から:フラグメント:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle icicle) { 
    MyLayoutBinding binding = MyLayoutBinding.inflate(inflater, container, false); 
    binding.setAmpoule(new LightDevice()); 
    return binding.getRoot(); 
} 
関連する問題