OnItemLongClickListener不适用于Firebase填充的ListView

时间:2019-05-19 09:58:21

标签: java android

我有一个从FirebaseDatabase填充的listView,我想使用onIntemLongClickListener删除项目,但它根本不起作用,因此永远不会调用该事件。我需要在代码中添加什么才能使其正常工作?谢谢! 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);
    }

CardView

<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"/>

1 个答案:

答案 0 :(得分:0)

请尝试从您的ListView中删除android:longClickable="true",因为这可能会消耗长按事件。