chi
chi

Reputation: 357

ListView setOnItemLongClickListener not working android

I have an android app, which shows a list of items. By pressing an item it should perform an action like delete item. The problem is that, when I press the item, nothing happens, it is like the screen does not recognize my finger press. But, down on page, I have a button, that works fine, when I press it.

import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

public class MainActivity extends AppCompatActivity {

private ListView listView;
public static FirebaseUtil firebaseUtil;
public static CostumeAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    firebaseUtil = new FirebaseUtil();
    setContentView(R.layout.activity_main);

    final Context context = this;

    if (firebaseUtil.getmFirebaseUser() == null) {
        loadLogInView();
    } else {
        firebaseUtil.setmUserId(firebaseUtil.getmFirebaseUser().getUid());

        listView = (ListView) findViewById(R.id.listView);
        adapter = new CostumeAdapter(this);
        listView.setAdapter(adapter);

        fillData();

        listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                final Costume car = adapter.getCostumes().get(position);
                final String uuid = car.getUuid();
                new AlertDialog.Builder(MainActivity.this)
                        .setIcon(android.R.drawable.ic_dialog_alert)
                        .setTitle("Delete")
                        .setMessage("This car will be deleted.")
                        .setPositiveButton("Delete", new DialogInterface.OnClickListener()
                        {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                firebaseUtil.remove(uuid, car);
                            }
                        })
                        .setNegativeButton("Cancel", null)
                        .show();
                return true;
            }
        });

The xml files are ok, I guaranteed.

Upvotes: 0

Views: 497

Answers (2)

X_Wen
X_Wen

Reputation: 21

I used this, and it worked, You can try out with some Log.d() to see if the clickListener is executed.

public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
    Log.d(TAG, "onViewCreated: on View Created");
    getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){

        public boolean onItemLongClick(AdapterView<?> adapterView,View view,final int position, long id) {
            new AlertDialog.Builder(getContext())
                    .setTitle(R.string.attention)
                    .setMessage(R.string.confirm_to_delete)
                    .setNegativeButton(R.string.cancel,null)
                    .setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Cursor c= adapter.getCursor();
                            c.moveToPosition(position);
                            int itemID = c.getInt(c.getColumnIndex("_id"));
                            dbWrite.delete("diary","_id=?",new String[]{""+itemID});
                            refreshList();
                        }
                    }).show();
            return true;
        }
    });
}

Upvotes: 0

Sindhura Katta
Sindhura Katta

Reputation: 71

The OnItemLongClickListener that you have implemented would work only if the else part is executed. Is firebaseUtil.getmFirebaseUser() == null false?

Upvotes: 1

Related Questions