0

Я пытаюсь реализовать привязки данных в одном из моих проектов Android. Я не смог найти полный рабочий пример в сети, так что начал с шагов в соответствии с: http://developer.android.com/tools/data-binding/guide.html.Примеры ошибок привязки Android

Коды в моих файлах следующим образом:

build.gradle (проект)

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.5.0' 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

build.gradle (модуль)

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

    defaultConfig { 
     applicationId "org.my.anddatabind" 
     minSdkVersion 18 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    dataBinding { 
     enabled = true 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:23.1.1' 
} 

MainActivity.java

package org.my.anddatabind; 

import android.app.Activity; 
import android.databinding.DataBindingUtil; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 

import org.my.anddatabind.databinding.MainActivityBinding; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main_activity); 

     MainActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity); 
     User user = new User("Test", "User"); 
     binding.setUser(user); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

main_acti vity.xml

<?xml version="1.0" encoding="utf-8"?> 
<layout xmlns:android="http://schemas.android.com/apk/res/android"> 
<data> 
    <variable name="user" type="com.my.anddatabind.User"/> 
</data> 
<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <TextView android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@{user.firstName}"/> 
    <TextView android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@{user.lastName}"/> 
</LinearLayout> 
</layout> 

User.java

package org.my.anddatabind; 

public class User { 
    public final String firstName; 
    public final String lastName; 
    public User(String firstName, String lastName) { 
     this.firstName = firstName; 
     this.lastName = lastName; 
    } 
} 

Когда я построить проект, я получаю сообщение об ошибке:

****/привязки данных ошибка **** Сообщ: Невозможно разрешить тип для пользовательского файла: C: \ Users \ xxx \ AndroidStudioProjects \ AndDataBind \ app \ src \ main \ res \ layout \ main_activity.xml loc: 11: 24 - 11:27 **** \ ошибка привязки данных * ***

Также setUser (пользователь) в MainActivity.java показывает n error: setUser ('org.my.anddatabind.User') в '' не может быть применен к '(org.my.anddatabind.User)'

+0

что случилось с вопросом для вниз голосования пожалуйста? –

+0

Оформить рабочий пример как демонстрацию для того же http://code2concept.blogspot.in/2016/07/android-data-binding-part-1.html – nitesh

ответ

1

Пожалуйста, проверьте имена пакетов классов. кажется ваше имя пакета класса «User» является

org.my.anddatabind.User 

Но в XML вы определили тип, как

<data> 
    <variable name="user" type="`com.my.anddatabind.User`"/> 
</data> 

т.е.

com.my.anddatabind.User