我有一个简单的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);
}
});
}
}
在预览中显示为x1c 0d1xchart_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中包含这些组件,所以我不知道它们是从哪里来的。
我尝试过的事#
- 使缓存失效/重新启动
- 清洁构建
- 编辑配置,取消选中“跳过安装,如果apk尚未更改”
到目前为止还没有任何效果。任何帮助都将不胜感激。谢谢!
1条答案
按热度按时间0x6upsns1#
应用程序显示旧版本的activity_main. xml(即使文件中不再包含这些组件)的问题可能是由于单个Activity具有两个不同的布局资源文件。您可以检查布局资源目录,查看是否具有两个不同版本的主Activity布局文件,例如“main.xml”和“main.xml(v21)",这可能导致混淆。You can see the reason for having multiple files in this answer.
在这种情况下,解决方案是确保编辑正确的布局文件。如果编辑了XML文件,但模拟器运行的是v21文件,则可以复制代码并将其粘贴到其他文件中。
如果您已对正确的文件进行了更改,但在模拟器中仍看到旧版本,则可以尝试清理并重新生成项目,甚至可以从模拟器中删除应用并重新安装。
如果您仍然遇到此问题,您可能还需要检查AndroidManifest.xml文件,以确保主Activity使用了正确的布局文件。此文件位于项目的“app”目录中。