View 層
public class MainView implements V {
View view ;
// EditText textView;
@Override
public void init(LayoutInflater inflater, ViewGroup container) {
view = inflater.inflate(R.layout.mvp_main_activity,container,false);
// textView = (EditText) view.findViewById(R.id.editText);
MvpMainActivityBinding binding = DataBindingUtil.bind(view);
Bean bean = new Bean("楊宇奇sakkjsakjsjk");
binding.setName(bean);
}
// public void setText(String name){
// textView.setText(name);
// }
@Override
public View getView() {
return view;
}
}
public interface V {
void init(LayoutInflater inflater , ViewGroup container);
View getView();
}
public abstract class BasePresenterActivity<Vu extends V> extends AppCompatActivity {
protected Vu vu ;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
vu = (Vu) getViewClass().newInstance();
vu.init(getLayoutInflater(),null);
setContentView(vu.getView());
BindView();//綁定數據
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
protected void BindView() {
}
public abstract Class<?> getViewClass();
}
public class Bean {
private String bean_name;
public Bean(String bean_name) {
this.bean_name = bean_name;
}
public String getBean_name() {
return bean_name;
}
public void setBean_name(String bean_name) {
this.bean_name = bean_name;
}
}
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="name"
type="smartlife.team.xjx.com.mvvmdemo.MVP.View.Bean"/>
</data>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:text="@{name.bean_name}" />
</LinearLayout>
</layout>