Android различает ListPopupWindows (по идентификатору) в AdapterView.OnItemClickListener - PullRequest
0 голосов
/ 03 октября 2018

всем привет!Это, вероятно, так же просто, как пирог, но, по правде говоря, я боролся около 1,5 часов.

Чего я хотел бы добиться, так это дифференцировать ListPopupWindow (используемый в качестве альтернативы спиннера) по idв AdapterView.OnItemClickListener, но я не смог этого сделать из-за:

Необратимых типов, не могу привести 'android.view.View' к 'android.Widget.ListPopupWindow'

в строке: ListPopupWindow listPopupWindow = (ListPopupWindow) parent;

AdapterView.OnItemClickListener onItemClickListener = new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            ListPopupWindow listPopupWindow = (ListPopupWindow) parent;
            int lpwID = listPopupWindow.getId();
            switch (lpwID) {
                ...
            }

        }
    };

Остальная часть моего кода, как показано ниже:

    //text views, ListPopupWindows & anchors, ArrayLists
    tvCategory = findViewById(R.id.tvCategory_activityEvent);
    tvSubcategory = findViewById(R.id.tvSubcategory_activityEvent);

    lpwCategory = new ListPopupWindow(this);
    lpwSubcategory = new ListPopupWindow(this);

    lpwCategory.setAnchorView(tvCategory);
    lpwSubcategory.setAnchorView(tvsubcategory);

    //arrayAdapters
    lCategories = DBManager.getDbInstance(Event.this).serviceCategoryDAO().getCategories();
    aaCategory = new ArrayAdapter<>(Event.this, R.layout. spinner_item , lCategories);
    aaSubcategory = new ArrayAdapter<>(Event.this, R.layout.spinner_item);

    aaCategory.setDropDownViewResource(android.R.layout. simple_spinner_dropdown_item );
    lpwCategory.setAdapter(aaCategory);
    aSubcategory.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    lpwSubcategory.setAdapter(aaSubcategory);

    lpwCategory.setOnItemClickListener(onItemClickListener);
    lpwSubcategory.setOnItemClickListener(onItemClickListener);

И еще один вопрос: как я могу назначитьID для ListPopupWidows?Когда дело доходит до прядильщиков, это просто:

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Spinner spinner = (Spinner) parent;
spinnerId = spinner.getId
...}

Будем очень благодарны за любые советы, подсказки и подсказки, так как я хочу держаться подальше от прядильщиков по нескольким причинам :) Заранее спасибо!

...