Почему ClassException с интерфейсным адаптером Activity? - PullRequest
0 голосов
/ 03 ноября 2019

Я пытаюсь использовать кнопку элемента в просмотре списка и сообщаю, что была нажата кнопка активности. У меня есть исключение: java.lang.ClassCastException: com.nhippye.curve.curve не может быть приведен к com.nhippye.curve.roadListPackage.roadListMainActivity

    //public class roadListAdapter extends ArrayAdapter<roadListItem> implements Filterable
    private Context mContext; 
    public roadListAdapter(Context context, List<roadListItem> roads) 
    {
    super(context, R.layout.road_row_item, roads);
    this.roads = roads;
    this.context = context;
    filterList = new ArrayList<>();
    this.filterList.addAll(roads);
    this.mContext = context; 
    }

    Button ButtonViewRoadListItemMenu = (Button) view.findViewById(R.id.imageButtonRoadListItemMenu);
    ButtonViewRoadListItemMenu.setOnClickListener(new Button.OnClickListener()
    {
    @Override
    public void onClick(View view)
    {
    ((roadListMainActivity)mContext).myAction(); // CLASS EXCEPTION
    }
    });
    //public class roadListMainActivity extends  AppCompatActivity implements   View.OnFocusChangeListener, SearchView.OnQueryTextListener
    { //...
    public void  myAction()
    {
    // do something here
    Log.d("$$myAction ", "myAction");
    }
    }

1 Ответ

0 голосов
/ 03 ноября 2019

Вы можете получить контекст действия из вида, по которому щелкнули:

((roadListMainActivity) view.getContext()).myAction();

Также я предлагаю вам следовать стандартам именования и иметь имена классов в верхнем и нижнем регистре для его экземпляров.

...