Khuất Duy Tân
Khuất Duy Tân

Reputation: 61

Context Menu without Adapter

I'm newbie in Android. I have a Main class like that

    public class SearchDay extends AppCompatActivity implements View.OnClickListener {
    private ImageButton insertDate;
    private Calendar cal;
    private int day;
    private int month;
    private int year;
    DatabaseHelper db;
    private Spinner SelectTypeNote;
    private EditText et;
    private Button btnSubmitSearchByDay, btnCancelSearchByDay;
    SimpleCursorAdapter dataAdapter;
    private static final int REQUEST_CODE = 10;
    private ListView listViewManagePage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search_day);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle("Tìm kiếm theo ngày");

        SelectTypeNote = (Spinner) findViewById(R.id.TypeNote_SearchByDay);
        insertDate = (ImageButton) findViewById(R.id.dateInsertSearchByDay);
        cal = Calendar.getInstance();
        et = (EditText) findViewById(R.id.dateInsertSearchByDay_editText);
        btnSubmitSearchByDay = (Button) findViewById(R.id.searchByDay);
        btnCancelSearchByDay = (Button) findViewById(R.id.cancelSearchByDay);

        db = new DatabaseHelper(this);

        cal = Calendar.getInstance();
        day = cal.get(Calendar.DAY_OF_MONTH);
        month = cal.get(Calendar.MONTH);
        year = cal.get(Calendar.YEAR);
        insertDate.setOnClickListener(this);

        Bundle extras = getIntent().getExtras();
        final String idUser = extras.getString("IdUser");
        setBtnSubmitNoteSearchByDay();
        setBtnCancelNoteSearchByDay(idUser);
//        registerForContextMenu(listViewManagePage);
        listViewManagePage = (ListView) findViewById(R.id.listView_SearchByDay);
        listViewManagePage.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(SearchDay.this, "Thanh cong", Toast.LENGTH_SHORT).show();
                registerForContextMenu(listViewManagePage);
            }

        });
    }
}

It's succesfull when i click on item in Listview. But i dont know how to open a Context Menu but without using Adapter. Can you guide me how to create a Context Menu without Adapter. This line registerForContextMenu(listViewManagePage); dont request me override any method.

Upvotes: 1

Views: 188

Answers (1)

Manh Duc
Manh Duc

Reputation: 11

  1. You only need to register Context Menu once in your code. register it outside of the OnItemClickListener event.
  2. override onCreateContextMenu() to add item to your menu

    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
    {
    super.onCreateContextMenu(menu, v, menuInfo);
    menu.setHeaderTitle("Select The Action");
    menu.add(0, v.getId(), 0, "Call");//groupId, itemId, order, title
    menu.add(0, v.getId(), 0, "SMS");
    }

  3. override onContextItemSelected() to handle menu item's clicked event

    public boolean onContextItemSelected(MenuItem item){
    if(item.getTitle()=="Call"){
    Toast.makeText(getApplicationContext(),"calling code",Toast.LENGTH_LONG).show();
    }
    else if(item.getTitle()=="SMS"){
    Toast.makeText(getApplicationContext(),"sending sms code",Toast.LENGTH_LONG).show();
    }else{
    return false;
    }
    return true;
    }

Upvotes: 1

Related Questions