Моя плавающая кнопка действия действует в другой строке в пользовательском представлении списка. Как я могу сделать это правильно? - PullRequest
1 голос
/ 10 июня 2019

Я создаю приложение для Android с настраиваемым списком с плавающей кнопкой действия, но когда я нажимаю кнопку с плавающим действием, она меняет последнюю строку, а не строку, где находится кнопка плавающего действия. Как я могу решить эту проблему?

Это мой код:

public class CustomSeasonsListBaseAdapter extends BaseAdapter implements ListAdapter {
private Show show;
private List<Season> seasons;
private MainActivity mainAct = MainActivity.getAct();
private TextView eNumber, sNumber;
private FloatingActionButton minusButton, addButton, deleteButton;

public CustomSeasonsListBaseAdapter(Show show) {
    this.show = show;
    this.seasons = show.getSeasons();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = mainAct.getLayoutInflater().inflate(R.layout.custom_seasons_list, parent, false);
    final Season season = seasons.get(position);

    eNumber = view.findViewById(R.id.episodeNumber);
    sNumber = view.findViewById(R.id.seasonNumber);
    minusButton = view.findViewById(R.id.minusButton);
    addButton = view.findViewById(R.id.addButton);
    deleteButton = view.findViewById(R.id.deleteSeasonButton);

    sNumber.setText("Season " + season.getSeason());

    eNumber.setText(season.getWatchedEpisodes() + "");

    minusButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //eNumber = view.findViewById(R.id.episodeNumber);
            season.removeWatchedEpisode();
            eNumber.setText(season.getWatchedEpisodes() + "");
            show.update();
            update();
        }
    });

    addButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //eNumber = view.findViewById(R.id.episodeNumber);
            season.addWatchedEpisode();
            eNumber.setText(season.getWatchedEpisodes() + "");
            show.update();
            update();
        }
    });

    deleteButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            show.removeSeason(season);
            update();
        }
    });
    return view;


}

public void update() {
    notifyDataSetChanged();
}
} 

Я использую BaseAdapter для создания пользовательского ListView.

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