Как открыть ContextMenu при нажатии на элемент в ListView - PullRequest
0 голосов
/ 21 апреля 2019

Я пытался открыть контекстное меню и я использовал registerForContectMenu () в onCreate (), а также onCreateContextMenu () и onContextItemSelected (), и что-то пошло не так, потому что ничего не произошло, когда я нажимал на каждый элемент.

ListView listView;
ArrayAdapter<Product> productArrayAdapter;
List<Product> productList;
String catagory;
TextView txtTitle;

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

    listView = (ListView)findViewById(R.id.listView);

    productList = new ArrayList<>();
    Bundle b = new Bundle();
    b = getIntent().getExtras();
    catagory = b.getString("catagory");
    txtTitle = (TextView)findViewById(R.id.txtTitle);
    txtTitle.setText("Ours "+catagory+" Collection");
    registerForContextMenu(listView);
}

Этот код предназначен для отображения данных из базы данных Firebase в виде списка

@Override
protected void onStart() {
    super.onStart();
    DatabaseReference myRef = FirebaseDatabase.getInstance().getReference(catagory);
    myRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            productList.clear();

            for(DataSnapshot d : dataSnapshot.getChildren())
            {
                if(catagory.equals("Doors")) {
                    Doors door = d.getValue(Doors.class);
                    productList.add(door);
                }
                if(catagory.equals("Locks")) {
                    Locks lock = d.getValue(Locks.class);
                    productList.add(lock);
                }
                if(catagory.equals("Remotes")) {
                    Remotes remote = d.getValue(Remotes.class);
                    productList.add(remote);
                }
            }

            productArrayAdapter = new ProductAdapter(CatalogActivity.this, productList, catagory);
            listView.setAdapter(productArrayAdapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

Все функции ContextMenu, которые требовались

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
{
    super.onCreateContextMenu(menu, v, menuInfo);
    if(v.getId() == R.id.listView) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.options_menu, menu);
    }
}

@Override
public boolean onContextItemSelected(MenuItem item)
{
    //all toasts is just for check if it works
    switch (item.getItemId()){
        case R.id.buyNow:
            Toast.makeText(getApplicationContext(),"now",
                  Toast.LENGTH_LONG).show();
            return true;
        case R.id.addToCart:

            Toast.makeText(getApplicationContext(),"cart",
                  Toast.LENGTH_LONG).show();
            return true;
        case R.id.saveForLater:
            Toast.makeText(getApplicationContext(),"later",
                  Toast.LENGTH_LONG).show();
            return true;
        default:
            return super.onContextItemSelected(item);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...