3

ListView には ArrayAdapter があります。TextView と矢印画像があります。TextView に 3 行以上ある場合は矢印の画像を表示する必要がありますが、行数が 3 未満の場合は矢印を非表示にする必要があります。しかし、実際には、TextView が描画される前に、Adapter の行数はカウントされません。何か案は?矢印付きのアイテムを表示する必要があるかどうかは、行数によって異なります。

このコードは機能しません (TextView は描画後にのみ行数を受け取ります)

if(holder.text.getLineCount() < 3)
{
        holder.arrow.setVisibility(View.GONE);
}
else
{
        holder.arrow.setVisibility(View.VISIBLE);
}
4

1 に答える 1

0

テキストが更新されるまで、コードの実行を遅らせる必要があります。これにはTextView::addTextChangedListener()イベントを使用してみてください。

holder.text.addTextChangedListener(new TextWatcher() {
    public void afterTextChanged(Editable target) {

        if(holder.text.getLineCount() < 3) {
             holder.arrow.setVisibility(View.GONE);
        }
        else {
             holder.arrow.setVisibility(View.VISIBLE);
        }

    }
    public void beforeTextChanged(CharSequence s, int start, int count, int after){}
    public void onTextChanged(CharSequence s, int start, int before, int count){}
});
于 2012-05-01T12:44:13.187 に答える