2017-04-19 7 views
0

RecyclerViewアダプタでTextViewにgetLineCount()を使用して、TextViewの行数を返しますが、毎回0を返します。RecyclerViewがTextViewで正しい行数を返していない

RecyclerViewをスクロールダウンしてからスクロールバックすると、正しい行数が返されます。

なぜこれをやっているのですが、最初に正しい行数を返すようにするにはどうすればよいですか?

は、ここに私のRecyclerViewアダプタの私のonBindViewHolder()方法です:

@Override 
public void onBindViewHolder(final ViewHolder holder, int position) { 
    Post post = posts.get(position); 

    holder.postText.setText(post.getText()); 

    holder.postText.post(new Runnable() { 
     @Override 
     public void run() { 
      int numLines = holder.postText.getLineCount(); 

      Log.d("# of lines", String.valueOf(numLines)); 
     } 
    }); 
} 

答えて

0

ないあなたが達成したい、まだあなたはこの間違った操作を行うように見えるものを確認してください。特に私はこれが好きではないRunnablegetLineCount()については、レイアウトを通過した後にのみ正しい数の行が得られます。つまり、TextViewは少なくとも1回は描画されていなければなりません。

+0

'Runnable'を削除すると、最初に正しい行数を返しません(0を返します)。少しスクロールしてからスクロールバックすると、正しい行数が返されます。 – user7891403

0

あなたができることは、textviewにViewTreeObserverを置き、グローバルレイアウトイベントをリッスンすることです。あなたの行番号がそこにあるはずです

+0

パフォーマンスはどうですか? – user7891403

+0

私はパフォーマンスのヒットは見たことがありません。これはリサイクルの見解です。したがって、一度に5または7個のアイテムしかロードされません。 –

関連する問題