Java 运行时的Android视图类型
我正在创建一个应用程序,它使用GridView显示一组项目。这些项目的定义如下:Java 运行时的Android视图类型,java,android,Java,Android,我正在创建一个应用程序,它使用GridView显示一组项目。这些项目的定义如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layou
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<com.example.myapp.customviews.Tile
android:layout_width="wrap_content"
android:layout_weight="1"
android:scaleType="fitCenter"
android:layout_height="match_parent"
android:id="@+id/tile" />
</LinearLayout>
LinearLayout tileLayout = (LinearLayout) gridView.getChildAt(position);
if (EmptyTile.class.isInstance(tileLayout.findViewById(R.id.tile))) {
Log.d("myappDebug", "Correct instance!");
}
我已经尝试使用instanceof
和tillelayout.findViewById(position.getClass()==EmptyTile.class
进行检查,但这些方法也不起作用。在运行时,我的视图只是一个平铺视图,而不是清空视图
如何检查我的视图是否实际上是EmptyTile类的实例?instanceof必须工作。但是,在XML中,您将视图定义为com.example.myapp.customviews.Tile类型,那么为什么希望它是一个清空文件呢?
如果在XML中使用EmptyTile(当然是正确的包),instanceof check和其他选项将起作用。我在XML中使用Tile,因为除了一个实例之外,所有实例都是Tile实例。不必为清空文件使用不同的XML就可以读取实例吗?不,我不这么认为。当您使用具体的视图子类在XML中定义标记时,它将被该类实例化,这就是为什么它是平铺的原因。您可以更好地描述您正在尝试做什么:是动态创建分幅,还是在XML中将所有分幅都定义为某个布局的子级?如果是后一种情况,只需在需要平铺时定义平铺,否则清空。我的平铺是动态创建的,因此我认为唯一的方法是使用两种布局。谢谢如果你动态地创建它们,那么你就创建了平铺或者清空文件,然后instanceof就可以工作了。