在另一个TextView android上添加读取更多TextView

时间:2012-09-11 16:19:21

标签: android textview onclicklistener

我想在现有TextView上添加一个简单的“Read more”/“Read less”按钮组合另一个..

我这样做了:

 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。

有人确实有想法吗?

1 个答案:

答案 0 :(得分:1)

简单"Read More"不等于"Read more",存在大写差异,因此您的代码永远不会被执行。

您应该在字符串中设置不会更改的值,例如"Read More",以帮助防止这些类型的错误,最好在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()的冗余调用,您无需使用setText("")“清除”以前的TextView。