2017-01-17 5 views
0

私は、項目のリストを表示するアンドロイドアプリを持っています。アイテムを押すと、アイテムの削除のようなアクションが実行されます。問題は、アイテムを押すと、何も起こりません。スクリーンが私の指押しを認識しないようなものです。しかし、ページの下に、私はそれを押すと、うまく動作するボタンがあります。ListView setOnItemLongClickListenerが動作していないandroid

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; 
      } 
     }); 

xmlファイルは問題ありません。

答えて

1

実装したOnItemLongClickListenerは、else部分が実行された場合にのみ機能します。 firebaseUtil.getmFirebaseUser()== null false?

+0

いいえ、ありません。たとえそうだったとしても、他の活動に行くべきです – chi

0

私はこれを使用して動作しました。いくつかのLog.d()を試して、clickListenerが実行されているかどうかを調べることができます。

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; 
     } 
    }); 
} 
関連する問題