0

カスタムアダプターを備えたリストビューがあります。そのためのコンテキストメニューを配置する必要がありますが、機能していません。そして、私onItemLongClickはリストに入れましたが、それも機能していません。をトリガーする方法がわかりませんcontextmenu。アイテムをクリックするか、それを長くクリックする必要がある場合。アイテムからIDを取得するために長いクリックを登録します。

編集私は何が問題なのかを理解していると思います。アイテムリストビューにボタンがあります。このボタンをレイアウトから削除すると、コンテキスト メニューが正常に機能しました。しかし、私はこのボタンが必要です。ボタンがコンテキスト メニューで問題を引き起こしたのはなぜですか?

これはクラスです:

public class HistoricoDespesasActivity extends Activity {

Helper h;
AlphaAnimation buttonClick; 
DespesasDAO dDAO;
ListView lv;
DespesaHistoricoAdapter adapter;
int idDespesasSelecionada;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_historico_despesas);

    lv = (ListView)findViewById(R.id.lvHistoricoDespesas);  

    TextView tvMarcaModelo = (TextView)findViewById(R.id.tvMarcaModeloCabecalho);
    TextView tvApelido = (TextView)findViewById(R.id.tvApelidoCabecalho);

    tvApelido.setVisibility(View.INVISIBLE);
    tvMarcaModelo.setVisibility(View.INVISIBLE);

    buttonClick = new AlphaAnimation(1, 0.5f);
    h = new Helper(this);
    h.mostraVeiculoAtivo();

    adapter = new DespesaHistoricoAdapter(this);

    dDAO = new DespesasDAO(this);
    dDAO.open();
    Cursor cursor = dDAO.consultarTodasDespesasByIdVeiculo(h.getId());

    int id;
    String data;
    String tipoDespesa = null;
    double valor;
    int tipo = 0;
    if(cursor != null && cursor.moveToFirst()){
        do {
            id = cursor.getInt(cursor.getColumnIndex(DespesasDAO.COLUNA_ID));
            data = cursor.getString(cursor.getColumnIndex(DespesasDAO.COLUNA_DESPESA_DATA));
            tipo = cursor.getInt(cursor.getColumnIndex(DespesasDAO.COLUNA_ITEM_ID));
            valor = cursor.getDouble(cursor.getColumnIndex(DespesasDAO.COLUNA_DESPESA_VALOR));

            if(tipo == 1){
                tipoDespesa = "Pedágio";
            } else if(tipo == 2){
                tipoDespesa = "Estacionamento";
            } else if(tipo == 3){
                tipoDespesa = "Lavagem";
            } else if(tipo == 4){
                tipoDespesa = "Diversos";
            }

            adapter.addDespesa(id, tipoDespesa, data, valor);

        } while (cursor.moveToNext());

        cursor.close();
        dDAO.close();
        lv.setAdapter(adapter);
    }
    lv.setLongClickable(true);
    lv.setOnItemLongClickListener(new OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view,
                int position, long id) {

            idDespesasSelecionada = (Integer) parent.getItemAtPosition(position);
            return true;
        }
    });
    registerForContextMenu(lv);

}

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {     
    super.onCreateContextMenu(menu, v, menuInfo);
    menu.setHeaderTitle("Despesas");
    menu.add(0, v.getId(), 0, "Deletar");

}

@Override
public boolean onContextItemSelected(MenuItem item) {       

    if(item.getTitle().equals("Deletar")){
        dDAO.open();
        dDAO.removerDespesasById(idDespesasSelecionada);
        dDAO.close();
    }



    onCreate(new Bundle());
    return super.onContextItemSelected(item);
}

@Override
protected void onResume() {
    onCreate(new Bundle());
    super.onResume();
}

}
4

2 に答える 2