Java ListView适配器-单击以启动新活动&;仅长按可启动ContextActionBar

Java ListView适配器-单击以启动新活动&;仅长按可启动ContextActionBar,java,android,listview,android-adapter,Java,Android,Listview,Android Adapter,Onclick和OnlongClick不起作用,我使用AppCompatActivity来支持KitKat。我不知道为什么它不起作用。是适配器还是视图?我知道我正在使用不推荐使用的适配器,但我使用它是有目的的 代码如下: public class MainActivity extends AppCompatActivity { ActionMode mActionMode; private CartDbAdapter dba; private Cursor cursor; publi

Onclick和OnlongClick不起作用,我使用AppCompatActivity来支持KitKat。我不知道为什么它不起作用。是适配器还是视图?我知道我正在使用不推荐使用的适配器,但我使用它是有目的的

代码如下:

public class MainActivity extends AppCompatActivity  {

ActionMode mActionMode;

private CartDbAdapter dba;

private Cursor cursor;


public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (savedInstanceState != null) {
        databaseview();
    }
    else {
        setContentView(R.layout.cart);
        dba = new CartDbAdapter(this);
        dba.open();
    }

private void databaseview(){

    cursor = dba.fetchAllBooks();

    ListView listView = (ListView) findViewById(list);

    startManagingCursor(cursor);

    String [] from = new String[] {BookContract.TITLE , BookContract.AUTHORS };
    int [] to = new int [] {android.R.id.text1 , android.R.id.text2  };

    SimpleCursorAdapter databaseAdapter = new  SimpleCursorAdapter(this,android.R.layout.simple_list_item_2, cursor, from, to);

    listView.setAdapter(databaseAdapter);

    listView.setOnLongClickListener(longListener);

    listView.setOnClickListener(clickListener);

}

View.OnLongClickListener longListener = new View.OnLongClickListener() {

    public boolean onLongClick(View view) {
        if (mActionMode != null) {
            return false;
        }
        mActionMode = MainActivity.this.startSupportActionMode(callback);
        view.setSelected(true);
        return true;
    }
};

View.OnClickListener clickListener = new View.OnClickListener(){

    public void onClick(View view) {
        Intent viewIntent = new Intent(MainActivity.this, BookActivity.class);
        Bundle bundle = new Bundle();
        bundle.putParcelable(BookActivity.KEY, dba.fetchBook(view.getId()));
        viewIntent.putExtras(bundle);
        startActivity(viewIntent);
    }
};


private ActionMode.Callback callback = new ActionMode.Callback() {

    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        MenuInflater inflater = mode.getMenuInflater();
        inflater.inflate(R.menu.contextbar_menu, menu);
        return true;
    }

    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        return false;
    }

    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        switch (item.getItemId()) {
            case R.id.delete:
                mode.finish();
                return true;
            default:
                return false;
        }
    }

    public void onDestroyActionMode(ActionMode mode) {
        mActionMode = null;
    }
};

谢谢大家!

我刚刚通过使用setOnItemClickListener和setOnItemLongClickListener与ListView适配器解决了这个问题

listView.setOnItemLongClickListener(new OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
            int arg2, long arg3) {
        Toast.makeText(arg0.getContext(),     ((TextView)arg1).getText(), Toast.LENGTH_SHORT).show();
        return false;
    }
 });

listView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> listView, View itemView, int index,
            long id) {
    }
});
listView.setOnItemLongClickListener(新的OnItemLongClickListener(){
@凌驾
长单击(AdapterView arg0、视图arg1、,
整数arg2,长arg3){
Toast.makeText(arg0.getContext(),((TextView)arg1.getText(),Toast.LENGTH_SHORT.show();
返回false;
}
});
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView listView、View itemView、int index、,
长id){
}
});
检查此项。