AndroidのRecyclerViewに区切り線をつけるためにDividerItemDecorationを実装したのですが、これが繰り返し呼ばれることで線がだんだん太くなります。
RecyclerView recycler = activity.findViewById(R.id.list); recycler.setHasFixedSize(true); LinearLayoutManager layout = new LinearLayoutManager(activity); recycler.setLayoutManager(layout); RecyclerAdapter adapter = new RecyclerAdapter(data); recycler.setAdapter(adapter); DividerItemDecoration decorator = new DividerItemDecoration(recycler.getContext(), layout.getOrientation()); recycler.addItemDecoration(decorator);
だんだん線が太く…というか濃くなっているのがおわかりいただけるでしょうか。
なお、コードを以下のようにすると、この現象が起きません。
RecyclerView recycler = activity.findViewById(R.id.list); recycler.setHasFixedSize(true); LinearLayoutManager layout = new LinearLayoutManager(activity); recycler.setLayoutManager(layout); RecyclerAdapter adapter = new RecyclerAdapter(data); recycler.setAdapter(adapter); if(test < 1){ DividerItemDecoration decorator = new DividerItemDecoration(recycler.getContext(), layout.getOrientation()); recycler.addItemDecoration(decorator); } test++;
なお、このコードはAsyncTaskのonPostExecuteにあり、バックグラウンドで読み込むたびに実行されています。次へボタンを押すたびにRecyclerViewを更新している感じです。リストの更新はその都度必要なのですが、DividerItemDecorationは一度だけ実行させればいいので、そのように記述したいです。(上記方法でも解消されるのですが、できればもう少しスマートに…)
よき案がございましたら、ご教授いただけますと幸いです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/18 05:57