我遇到了kotlin equals函数来比较两个相同类型的列表。它对于带有数据类的纯Kotlin很好用。
我正在Kotlin项目中使用Java库,其中的回调方法以X秒的时间间隔返回对象列表。尝试针对每个调用将旧列表与新列表进行比较,但是即使项目相同且相等,equals也会返回false。
val mOldList: MutableList<MyObject>()? = null
override fun updatedList(list: MutableList<MyObject>){
// other code
if (mOldList.equals(list)) // false everytime
}
Run Code Online (Sandbox Code Playgroud)
这是因为Java的来自库的equals方法吗?
列表比较的替代建议将是有益的。
我们正在为开发Android应用程序的单个应用程序创建许多XML文件; 当然这是android的主题.对于app的每个屏幕,我们都在创建一个带有一些布局的XML(静态实现).在执行时,每次读取XML文件以获取它想要显示我们设计的屏幕的所有资源.
通过在java代码本身中添加几行(动态实现)可以实现相同的设计.就像我们可以扩展ListActivity而不是创建XML文件一样.那么为什么要使用XML,因为应用程序需要从手机内存中读取文件,这可能导致访问速度慢并使应用程序变慢?
因此,动态实现总是优于静态实现.
如果我错了,请纠正我.
我实际上使用的是嵌套列表视图.父列表视图使用自定义适配器和子级的正常列表视图.
我知道我可以使用expandable list view.但是在我的场景中处理它们的子项更复杂.有很多组件.
这是我尝试过的,点击父列表中的按钮显示相应的子列表项.这工作正常.但唯一的问题是滚动.我想滚动子列表,但是父列表是滚动的.我尝试了两个setScrollContainer(false)并且setClickable(false)(刚试过)为父母,但没有用.
这是我的代码.
activity_main.xml中
<RelativeLayout
android:id="@+id/parent_rel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin" >
<Button
android:id="@+id/b_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="15dp"
android:text="View" />
<TextView
android:id="@+id/parent_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/b_view"
android:layout_alignBottom="@+id/b_view"
android:layout_alignParentLeft="true"
android:layout_marginLeft="96dp"
android:text="TextView" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/child_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/parent_rel"
android:layout_below="@+id/parent_rel"
android:visibility="gone" >
<ListView
android:id="@+id/ch_listView"
android:layout_width="match_parent"
android:layout_height="150dp"
android:background="#000000" >
</ListView>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
MainActivity.java
公共类MainActivity扩展ListActivity {
ListView lv;
String[] prnt_items = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" };
boolean isViewing = false;
RelativeLayout …Run Code Online (Sandbox Code Playgroud)