首页 > 解决方案 > 运行应用程序显示项目中不再存在的旧 XML 布局

问题描述

我有一个简单的 android 项目,我在其中填充数据库中的项目列表。为此,我RecyclerView在我的activity_main.xml

这些是我的两个(并且仅存在两个)xml 文件

activity_main.xml

package com.twocrows.foretoldapp;

import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;

import com.twocrows.foretoldapp.adapter.ChartAdapter;
import com.twocrows.foretoldapp.entity.Chart;
import com.twocrows.foretoldapp.viewmodel.ChartViewModel;

import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ChartViewModel chartViewModel;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        RecyclerView recyclerView = findViewById(R.id.recycler_view);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setHasFixedSize(true);

        final ChartAdapter adapter = new ChartAdapter();
        recyclerView.setAdapter(adapter);
        
        chartViewModel = new ViewModelProvider(this, ViewModelProvider.AndroidViewModelFactory.getInstance(this.getApplication())).get(ChartViewModel.class);
        chartViewModel.getAllCharts().observe(this, new Observer<List<Chart>>() {
            @Override
            public void onChanged(List<Chart> charts) {
                adapter.setCharts(charts);
            }
        });
    }
}

像这样在预览中显示 在此处输入图像描述

chart_item.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp">

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="8dp">


    <TextView
        android:id="@+id/text_view_location"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:text="location"
        android:textAppearance="@style/TextAppearance.AppCompat.Medium" />

    <TextView
        android:id="@+id/text_view_name"
        android:layout_width="139dp"
        android:layout_height="38dp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_marginEnd="248dp"
        android:layout_marginRight="248dp"
        android:layout_below="@+id/text_view_name"
        android:text="Chart Name"
        android:textAppearance="@style/TextAppearance.AppCompat.Large"
        tools:ignore="NotSibling" />
    <TextView
        android:id="@+id/text_view_dateTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text_view_name"
        android:text="MM/DD/YYYY"/>

</RelativeLayout>

</androidx.cardview.widget.CardView>

MainActivity.java

package com.twocrows.foretoldapp;

import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;

import com.twocrows.foretoldapp.adapter.ChartAdapter;
import com.twocrows.foretoldapp.entity.Chart;
import com.twocrows.foretoldapp.viewmodel.ChartViewModel;

import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ChartViewModel chartViewModel;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        RecyclerView recyclerView = findViewById(R.id.recycler_view);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setHasFixedSize(true);

        final ChartAdapter adapter = new ChartAdapter();
        recyclerView.setAdapter(adapter);

        chartViewModel = new ViewModelProvider(this, ViewModelProvider.AndroidViewModelFactory.getInstance(this.getApplication())).get(ChartViewModel.class);
        chartViewModel.getAllCharts().observe(this, new Observer<List<Chart>>() {
            @Override
            public void onChanged(List<Chart> charts) {
                adapter.setCharts(charts);
            }
        });
    }
}

问题是,每当我尝试运行该应用程序时,它都会向我显示主活动 xml 文件的旧版本。我什至不再在 xml 中有这些组件,所以我不明白它们来自哪里。

#我尝试过的事情

到目前为止没有任何工作。任何帮助,将不胜感激。谢谢!

在此处输入图像描述

标签: android-studioandroid-activityandroid-recyclerview

解决方案


推荐阅读