加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 导航抽屉和android数据绑定

发布时间:2020-12-15 02:18:34 所属栏目:Java 来源:网络整理
导读:对不起我的英语不好.我需要使用 Android数据绑定处理按钮单击.我在content_main.xml中包含了数据绑定. data variable name="temp" type="skubyev.anton.navigationdrawer.DataBindingClass.MainActivityData" / variable name="presenter" type="skubyev.ant
对不起我的英语不好.我需要使用 Android数据绑定处理按钮单击.我在content_main.xml中包含了数据绑定.

<data>
            <variable
                name="temp"
                type="skubyev.anton.navigationdrawer.DataBindingClass.MainActivityData" />
            <variable
                name="presenter"
                type="skubyev.anton.navigationdrawer.DataBindingClass.MainActivityPresenter"/>
        </data>
....
     <android.support.design.widget.FloatingActionButton
                android:onClick="@{() -> presenter.onShowData(temp)}"

但是MainActivity.java

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ContentMainBinding binding = DataBindingUtil.setContentView(this,R.layout.content_main);

        MainActivityPresenter mainActivityPresenter = new MainActivityPresenter(this);
        MainActivityData mainActivityData = new MainActivityData("Иди нахуй");
        binding.setTemp(mainActivityData);
        binding.setPresenter(mainActivityPresenter);

        setContentView(R.layout.activity_main);
....

 @Override
    public void showData(MainActivityData mainActivityData) {
        String textForRecognition = mainActivityData.getTextForRecognition();
        Toast.makeText(this,textForRecognition,Toast.LENGTH_SHORT).show();
    }

我想要showData运行,然后点击content_main中的FloatingActionButton.但showData – 类MainActivity中的函数.因此,据我所知,当您单击content_main.xml上的按钮时,不会调用它.我该怎么办?创建一个单独的类ContentActivity.java whith函数showData.

我只想要MainActivity.java负责处理content_main上的点击.如何正确实现?

解决方法

在Activity中添加此代码用于数据绑定

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ActivityMainBinding activityMainBinding = DataBindingUtil.setContentView(this,R.layout.activity_main);
    MainViewmodel mainViewmodel = ViewModelProviders.of(this).get(MainViewmodel.class);
    activityMainBinding.setHandlers(handlers);
    activityMainBinding.setViewmodel(mainViewmodel);



    Toolbar toolbar = findViewById(R.id.toolbar);
    toolbar.setTitle("HOME");

    DrawerLayout drawer = activityMainBinding.drawerLayout;
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this,drawer,toolbar,R.string.navigation_drawer_open,R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = activityMainBinding.navView;
    NavHeaderMainBinding navHeaderMainBinding = DataBindingUtil.inflate(getLayoutInflater(),R.layout.nav_header_main,activityMainBinding.navView,true);
    navHeaderMainBinding.navEmail.setText(session.getFacilityEmail());
    navHeaderMainBinding.navName.setText(session.getFacilityname());
    navigationView.setNavigationItemSelectedListener(this);



}

在nav_hader_main.xml中你必须是这样的

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<data>

    <variable
        name="navigationheader"
        type="com.nudge.gurukul.view.activities.MainActivity" />

    <import type="android.view.View" />
</data>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="@dimen/nav_header_height"
    android:background="@drawable/side_nav_bar"
    android:gravity="bottom"
    android:orientation="vertical"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:theme="@style/ThemeOverlay.AppCompat.Dark">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/nav_header_desc"
        android:paddingTop="@dimen/nav_header_vertical_spacing"
        app:srcCompat="@mipmap/app_logo_round" />

    <TextView
        android:id="@+id/nav_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="@dimen/nav_header_vertical_spacing"
        android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

    <TextView
        android:id="@+id/nav_email"

        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

这应该按照您的例外情况,您可以将文本和图像绑定到导航抽屉

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读