2017-02-18 57 views
0

Onclick和OnlongClick不起作用,我使用AppCompatActivity来支持KitKat。我不知道为什么它不起作用。它是适配器还是视图?我知道我正在使用已弃用的适配器,但我将其用于某个目的。ListView适配器 - OnClick启动一个新的Activity&OnLongClick启动一个ContextActionBar

下面的代码:

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

谢谢!

+0

检查此[链接](http://www.androhub.com/android-contextual-action-mode-over -toolbar /)。 –

回答

0

我只是用setOnItemClickListener与ListView控件适配器setOnItemLongClickListener解决了这个问题..

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) { 
    } 
}); 
相关问题