実現したいこと
スクロールを繰り返しても意図していない行の表示が変わることを防ぎたい。
発生している問題・分からないこと
ListViewを使った一覧表を作成しています。
フラグが立っているTextViewのみ色を変えているのですが、スクロールを繰り返していると、
違う行のフラグが立っていないTextViewの色まで変わってしまう。
エラーメッセージ
error
1エラーメッセージは特に出ていません。
該当のソースコード
private class ControlAdapter extends BaseAdapter { private final ArrayList<ReserveTimetableViewData> reserveList; private final LayoutInflater inflater; //private final LocalDateTime dateTimeNow; public ControlAdapter(Context context, ArrayList<ReserveTimetableViewData> items) { this.reserveList = items; this.inflater = LayoutInflater.from(context); //this.dateTimeNow = datetime; } public ArrayList<ReserveTimetableViewData> getItems() { return this.reserveList; } @Override public int getCount() { return reserveList.size(); } @Override public Object getItem(int pos) { return reserveList.get(pos); } @Override public long getItemId(int pos) { return reserveList.get(pos).getPatternId(); } @Override public View getView(int pos, View view, ViewGroup viewGroup) { ReserveTimetableViewData data = reserveList.get(pos); if (view == null) { view = inflater.inflate(R.layout.item_reserve_timetable_result, null); } //各時間 TextView time0800Text = view.findViewById(R.id.time_0800); //TODO 色は状況により変化する if(data.getTime0800() == 1){ isReserveTime(time0800Text); } TextView time0830Text = view.findViewById(R.id.time_0830); if(data.getTime0830() == 1){ isReserveTime(time0830Text); } TextView time0900Text = view.findViewById(R.id.time_0900); if(data.getTime0900() == 1){ isReserveTime(time0900Text); } TextView time0930Text = view.findViewById(R.id.time_0930); if(data.getTime0930() == 1){ isReserveTime(time0930Text); } TextView time1000Text = view.findViewById(R.id.time_1000); if(data.getTime1000() == 1){ isReserveTime(time1000Text); } TextView time1030Text = view.findViewById(R.id.time_1030); if(data.getTime1030() == 1){ isReserveTime(time1030Text); } TextView time1100Text = view.findViewById(R.id.time_1100); if(data.getTime1100() == 1){ isReserveTime(time1100Text); } TextView time1130Text = view.findViewById(R.id.time_1130); if(data.getTime1130() == 1){ isReserveTime(time1130Text); } TextView time1200Text = view.findViewById(R.id.time_1200); if(data.getTime1200() == 1){ isReserveTime(time1200Text); } TextView time1230Text = view.findViewById(R.id.time_1230); if(data.getTime1230() == 1){ isReserveTime(time1230Text); } TextView time1300Text = view.findViewById(R.id.time_1300); if(data.getTime1300() == 1){ isReserveTime(time1300Text); } TextView time1330Text = view.findViewById(R.id.time_1330); if(data.getTime1330() == 1){ isReserveTime(time1330Text); } TextView time1400Text = view.findViewById(R.id.time_1400); if(data.getTime1400() == 1){ isReserveTime(time1400Text); } TextView time1430Text = view.findViewById(R.id.time_1430); if(data.getTime1430() == 1){ isReserveTime(time1430Text); } TextView time1500Text = view.findViewById(R.id.time_1500); if(data.getTime1500() == 1){ isReserveTime(time1500Text); } TextView time1530Text = view.findViewById(R.id.time_1530); if(data.getTime1530() == 1){ isReserveTime(time1530Text); } TextView time1600Text = view.findViewById(R.id.time_1600); if(data.getTime1600() == 1){ isReserveTime(time1600Text); } TextView time1630Text = view.findViewById(R.id.time_1630); if(data.getTime1630() == 1){ isReserveTime(time1630Text); } TextView time1700Text = view.findViewById(R.id.time_1700); if(data.getTime1700() == 1){ isReserveTime(time1700Text); } TextView time1730Text = view.findViewById(R.id.time_1730); if(data.getTime1730() == 1){ isReserveTime(time1730Text); } TextView time1800Text = view.findViewById(R.id.time_1800); if(data.getTime1800() == 1){ isReserveTime(time1800Text); } TextView time1830Text = view.findViewById(R.id.time_1830); if(data.getTime1830() == 1){ isReserveTime(time1830Text); } TextView time1900Text = view.findViewById(R.id.time_1900); if(data.getTime1900() == 1){ isReserveTime(time1900Text); } TextView time1930Text = view.findViewById(R.id.time_1930); if(data.getTime1930() == 1){ isReserveTime(time1930Text); } TextView time2000Text = view.findViewById(R.id.time_2000); if(data.getTime2000() == 1){ isReserveTime(time2000Text); } TextView time2030Text = view.findViewById(R.id.time_2030); if(data.getTime2030() == 1){ isReserveTime(time2030Text); } TextView time2100Text = view.findViewById(R.id.time_2100); if(data.getTime2100() == 1){ isReserveTime(time2100Text); } TextView time2130Text = view.findViewById(R.id.time_2130); if(data.getTime2130() == 1){ isReserveTime(time2130Text); } TextView time2200Text = view.findViewById(R.id.time_2200); if(data.getTime2200() == 1){ isReserveTime(time2200Text); } TextView time2230Text = view.findViewById(R.id.time_2230); if(data.getTime2230() == 1){ isReserveTime(time2230Text); } TextView time2300Text = view.findViewById(R.id.time_2300); if(data.getTime2300() == 1){ isReserveTime(time2300Text); } TextView time2330Text = view.findViewById(R.id.time_2330); if(data.getTime2330() == 1){ isReserveTime(time2330Text); } TextView time2400Text = view.findViewById(R.id.time_2400); if(data.getTime2400() == 1){ isReserveTime(time2400Text); } return view; } //選択状態とする private void isReserveTime(TextView tv){ //予約 tv.setBackgroundColor(getColor(R.color.btn_check_cl)); } }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
色を変える処理をgetViewの外に出してみましたが解決しませんでした。
補足
ANDROID10
回答1件
あなたの回答
tips
プレビュー