【发布时间】:2019-09-08 23:14:34
【问题描述】:
我创建了一个简单的 ListView,它有一个子视图。但是,OnItemClickListener 不起作用。
伙计们,你能告诉我这里的问题吗?
lvList.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ListData mLog = listAdapter.getItem(position);
Toast.makeText(JobsActivity.this, "Title: " + mLog.getTitle() + " Description: " + mLog.getDescription(), Toast.LENGTH_LONG).show();
}
});
public class JobsActivity extends Drawer {
public static final int MULTIPLE_PERMISSIONS = 10;
ListView lvList;
ArrayList<ListData> myList = new ArrayList<ListData>();
ListAdapter listAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.jobs);
ButterKnife.bind(this);
askForPermission();
loadDrawer();
lvList = (ListView) findViewById(R.id.list);
listAdapter = new ListAdapter(JobsActivity.this, myList);
for (int i = 0; i<=5; i++){
ListData mLog = new ListData();
mLog.setTitle("test "+i);
mLog.setDescription("demo "+i);
mLog.setImage("https://via.placeholder.com/150");
myList.add(mLog);
}
listAdapter.notifyDataSetChanged();
lvList.setAdapter(listAdapter);
lvList.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ListData mLog = listAdapter.getItem(position);
Toast.makeText(JobsActivity.this, "Title: " + mLog.getTitle() + " Description: " + mLog.getDescription(), Toast.LENGTH_LONG).show();
}
});
}
父列表视图
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:focusable="true"
android:clickable="true"
android:focusableInTouchMode="false"
tools:context=".JobsActivity"
tools:openDrawer="start">
<ProgressBar
android:id="@+id/main_progress"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_centerInParent="true"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:elevation="2dp"
android:visibility="gone" />
<LinearLayout
android:layout_width="match_parent"
android:padding="16dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="false"
android:clickable="true"
>
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:clickable="true"
android:divider="@android:color/transparent"
android:focusable="true"
android:focusableInTouchMode="false"
android:descendantFocusability="blocksDescendants"
/>
</LinearLayout>
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
</android.support.v4.widget.DrawerLayout>
子项目
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="@style/CardView.Light"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:focusable="false"
android:focusableInTouchMode="false"
tools:context=".JobsActivity"
tools:ignore="ContentDescription">
<android.support.constraint.ConstraintLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/customer_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="@string/customer_name"
android:textAppearance="@style/TextAppearance.AppCompat.Headline"
android:textColor="@color/colorPrimaryTextDefaultMaterialLight"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@+id/customer_mobile_image" />
<TextView
android:id="@+id/mobile_model"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="@string/mobile_model"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
android:textColor="@color/colorSecondaryTextDefaultMaterialLight"
app:layout_constraintTop_toBottomOf="@+id/customer_name"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@+id/customer_mobile_image" />
<ImageView
android:id="@+id/customer_mobile_image"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@android:color/darker_gray" />
<Button
style="@style/Widget.AppCompat.Button.Borderless"
android:id="@+id/action_button_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:minWidth="0dp"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:text="@string/show_location"
android:textColor="@color/colorPrimaryTextDefaultMaterialLight"
app:layout_constraintTop_toBottomOf="@+id/customer_mobile_image"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:focusable="false"
android:focusableInTouchMode="false"
/>
<Button
style="@style/Widget.AppCompat.Button.Borderless"
android:id="@+id/btnOpen_pickup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:minWidth="0dp"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:text="@string/open_job"
android:textColor="@color/colorPrimaryTextDefaultMaterialLight"
app:layout_constraintTop_toTopOf="@+id/action_button_1"
app:layout_constraintStart_toEndOf="@+id/action_button_1" />
</android.support.constraint.ConstraintLayout>
</android.support.v7.widget.CardView>
【问题讨论】:
-
什么不起作用?更具体。
-
在项目上,单击显示 Toast 和项目标题
-
android:focusableInTouchMode="true" -
不走运,我试过了
-
在子项的根视图而不是列表视图中使用 android:descendantFocusability="blocksDescendants"。
标签: android android-listview onitemclicklistener