java - OnItemLongClickListener 在 Firebase 数据库填充的 ListView 上不起作用
问题描述
我有一个从 FirebaseDatabase 填充的 listView,我想使用 onIntmLongClickListener 删除项目,但它根本不起作用,该事件永远不会被调用。我需要在代码中添加什么才能使其正常工作?谢谢!PS:我在与此相关的日志中没有任何错误。我也尝试打开一个新活动,但它也不起作用。
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
car = new Car();
listView = findViewById(R.id.list_view_main);
firebaseDatabase = FirebaseDatabase.getInstance();
list = new ArrayList<>();
adapter= new ArrayAdapter<>(this,R.layout.list_item,R.id.list_title, list);
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Log.v("long clicked","pos: " + position );
Intent intent = new Intent(MainActivity.this, AddCarActivity.class);
startActivity(intent);
}
});
数据库调用
protected void onStart() {
super.onStart();
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
car = dataSnapshot1.getValue(Car.class);
if (!list.contains(car.getLicenceNumber()))
list.add(car.getLicenceNumber());
}
listView.setAdapter(adapter);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
databaseReference.keepSynced(true);
}
卡片视图
<LinearLayout
android:id="@+id/list_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:orientation="vertical"
android:background="?attr/selectableItemBackground"
android:padding="16dp">
<TextView
android:id="@+id/list_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Title"
android:textColor="@android:color/black"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
<ListView
android:id="@+id/list_view_main"
android:layout_width="372dp"
android:layout_height="367dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"
android:longClickable="true"/>
解决方案
尝试android:longClickable="true"
从您的 ListView 中删除,因为这可能会消耗长点击事件。
推荐阅读
- mysql - 与 RDS MySQL/Aurora 无服务器集群的 SSL 连接因 Node.js 失败
- php - 在 SQL 输出中分隔月份
- jenkins - 想在 Jenkins 中安排一个任务在 3 月和 9 月的第一个星期二触发
- java - PrintWriter 不输出所有字符
- ios - IOS:从其他选项卡展开 segues
- azure-logic-apps - 从 Azure 逻辑应用启动 Azure VM 脚本
- r - 根据 DT2 列值更新 DT1 中行子集的列值
- sql-server - 如何管理对话重用和对话生命周期?
- python - 我的数据库没有返回任何东西 - Python
- magento - 在产品详细信息页面上显示运费估算 - Magento 2