gorod’s diary

楽天ブログに過去記事あります

RecyclerViewに載せたTextViewが省略されて表示してるかを確認する!

RecyclerViewで表示する時、あまりにも長い場合は行数制限を掛けることが多いかと思います。
あ…RecyclerView以外でもあるけどw

で、ネットでRecyclerViewを引っ掛けて検索してみると…思ったような記事が見つからず…orz
であれば、RecyclerViewを抜いた状態で検索してみて色々と試してみました!

ようやく…!!
思った通りの動きが作れたので備忘録として残そうかと思います^ ^

--- 省略 ---
holder.textview.text = "長文を入れる"
holder.textview.post { 
    ---ここにTextViewが省略されているかのチェックを行う ---
}

xml側はmaxLineとellipsizeは設定した状態になっています。

TextViewに値を入れた直後って、まだレイアウトが定まっていないようなので省略してるどころかレイアウト値が取れないんですよね。
で、定まったタイミングって何を宣言すればいいのか?ってことで、RecyclerViewで使えそうなものを自分自身で試してみたり、ネットでググったりしてようやく答えが見つけられたという感じです( ̄∇ ̄)

参考になったHPはこちら。
(Android)動的に変化する TextView にもっと読むボタンを設置する - 炊きたてのご飯が食べたい

ここの記事に「post」と書いてあったので、試したところ…ドンピシャ!!でした!
ありがとうございます!!

他の記事で

holder.textview.addOnLayoutChangeListener { view, i, i2, i3, i4, i5, i6, i7, i8 ->
    --- ここにTextViewが省略されているかのチェックを行う --- 
}

でやるとレイアウトが確定されるので、ここで確認取れたとあったのですが…以下のようなパターンではこの処理を通過することがないことが判明orz

・例えば、条件(日付とか)をメイン画面で指定することによりRecyclerViewの内容が変化する。ただし、使う項目は同じである

この場合、初回なら「addOnLayoutChangeListener」に処理が行くものの、RecyclerViewを「notifyDataSetChanged」等をした後はこの処理は行かないので、省略されたTextViewがあっても何も反応がないんですよね…。
そういうのがなければ使えるといった感じなのかな?
よく分からんがw

今回めちゃくちゃハマったので(特にRecyclerViewでのという記事がなかった…orz)また使う時にこの記事を読み返そうかなと思います^ ^

あ!
TextViewが省略されているかの確認方法は、以下のHPを参考にしました^ ^
TextViewが省略されたかどうかを確認する - visible true
この記事は1行のみ有効となってますが、少し捻ってRecyclerViewで使えるようにしたところ、何行でも対応することが可能となりました( ^ω^ )
すごく助かりました!ありがとうございます!!


ではでは!