2015-07-10 7 views

ответ

2

У нас еще нет этого, может быть, после v1. Не уверен, что ваш вариант использования, но мы уже создаем поля для каждого представления с идентификатором, поэтому, когда вам нужны данные, вы можете получить его с помощью этого представления.

например. если у вас есть <EditText android:id="@+id/mytext"/>

Сгенерированный класс привязки будет иметь public final EditText mytext;.

+0

Я получил его! Спасибо – araraujo

+0

В rc1 вы можете иметь обработчики событий для любого события в представлении. Например, 'android: onTextChanged = "@ {myObj.textChanged}"'. Я знаю, что это не двусторонняя привязка данных, но это облегчает жизнь. –

+0

Двунаправленная привязка данных стала доступной в то же время для различных компонентов. См. Http://stackoverflow.com/documentation/android/111/data-binding-library/6634/built-in-two-way-data-binding#t=201704111334151449175 для получения более подробной информации – aha

0

Вот простой пример:

<layout xmlns:android="http://schemas.android.com/apk/res/android"> 

    <data> 
     <variable name="bind" type="com.example.app.MainActivity.Bind"/> 
    </data> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <EditText 
      android:id="@+id/editText" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:onTextChanged="@{bind.textChanged}" 
      android:text="@{bind.text}"/> 

    </LinearLayout> 
</layout> 

и код вида деятельности (с использованием retrolambda):

public class MainActivity extends AppCompatActivity { 

    private final Bind bind = new Bind(); 

    public class Bind { 
     public ObservableField<String> text = new ObservableField<>(); 

     public TextViewBindingAdapter.OnTextChanged textChanged = (s, start, before, count) -> { 
      System.out.println("New value: " + s); 
     }; 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); 
     binding.setBind(bind); 
    } 
}