1

別のものを組み合わせた既存の TextView に、単に「もっと読む」/「もっと読む」ボタンを追加したい..

これは私がしました:

 this.announcer_description = (TextView) findViewById(R.id.announcer_description);
    this.readmore = (TextView) findViewById(R.id.readmore);
    this.readmore.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                if (readmore.getText().equals("Read More"))
                {
                    announcer_description.setText("");
                    announcer_description.setText(currentAnnouncer.getDescription_fr());
                    readmore.setText("");
                    readmore.append("Read less");
                }
                else if (readmore.getText().equals("Read less"))
                {
                    announcer_description.setText("");
                    announcer_description.setText(shortDesc);
                    readmore.setText("");
                    readmore.append("Read more");
                }
            }});

私の "announcer_description" TextView は "Read more" に初期化されています..しかし、これは機能しません.. Read more と Read Less を使用して見つけた唯一の方法は、この OnClickListener にいくつかの OnClickListener をネストすることです..

誰かがアイデアを持っていますか?

4

1 に答える 1

2

単純"Read More"に equal"Read more"ではありません。大文字と小文字の違いがあるため、コードが実行されることはありません。

"Read More"これらのタイプの間違いを防ぐために、変更されない値 ( など) を String に設定する必要があります(できればstrings.xml.

クラス全体の変数を作成し、次のように設定しますonCreate()

String readMoreString;
...
readMoreString = getResources().getText(R.string.read_more);

簡略化された OnClickListener:

this.readmore.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        if (readmore.getText().toString().equals(readMoreString))
        {
            announcer_description.setText(currentAnnouncer.getDescription_fr());
            readmore.setText(readLessString);
        }
        else 
        {
            announcer_description.setText(shortDesc);
            readmore.setText(readMoreString);
        }
    }
});

また、 への冗長な呼び出しを削除する方法にも注意してsetText()ください。以前の TextView を で「クリア」する必要はありませんsetText("")

于 2012-09-11T16:31:39.633 に答える