SimpleCursorAdapter adapter; adapter = new SimpleCursorAdapter( this, R.layout.activity_main, c, columns, views, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
您已将主活动的布局定义为游标适配器将用于创建列表中每个项目外观的布局。 https://developer.android.com/reference/android/widget/SimpleCursorAdapter.html#SimpleCursorAdapter(android.content.Context,%20int,%20android.database.Cursor,%20java.lang.String [],%20int [ ],%20int)
结果:将为列表视图中的每个项目复制按钮和文本视图。你的问题并不像只有两个按钮那么简单。对于您拥有的每个联系人,将创建一个按钮,一个列表视图和两个文本视图,而每个联系人只需要2个文本视图。
一个简单的解决方案:创建一个新的XML文件,其中仅包含显示联系人姓名和ID所需的文本视图,并将其作为布局提供给适配器。
列表项目布局:
//list_item.xml <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".Debug1ListItem"> <TextView android:id="@+id/contactName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:text="TextView" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/contactID" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:text="TextView" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/contactName" /> </android.support.constraint.ConstraintLayout>
适配器结构:
SimpleCursorAdapter adapter; adapter = new SimpleCursorAdapter( this, R.layout.list_item, c, columns, views, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);