繁体   English   中英

如何根据所选颜色(从颜色列表中选择)更改android中TextView文本的颜色

[英]How to change the color of text of TextView in android according to chosen color, selected from a list of color

我已经创建了一个颜色列表,我想在有人单击列表项之一时立即更改ID为“用户名”的TextView文本的颜色。我尝试了以下代码,但它不起作用。 m无法找出以下代码中的错误:

public class UserInformation extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user_information);
        Bundle app = getIntent().getExtras();
        if (app == null) {
            return;
        }
        final TextView Name = (TextView) findViewById(R.id.NameOfUser);//refernce to textview
        Name.setText(app.getString("user_information"));

        String[] color = {"Blue", "Red", "Green"};
        ListAdapter mylist = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, color);
        ListView renuList = (ListView) findViewById(R.id.Mylist);
        renuList.setAdapter(mylist);

        renuList.setOnItemClickListener(
                new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                        String item = String.valueOf(adapterView.getItemIdAtPosition(i));
                        if (item == "Green") {                       
                            Name.setTextColor(Color.GREEN);// suppose I want to set the color to green if green is selected   
                        }
                    }
                }
        );
}

问题一:

似乎您正在调用getItemIdAtPosition()而不是getItemAtPosition()

假设您想从适配器的给定位置获取数据,则应更改以下内容:

String item = String.valueOf(adapterView.getItemIdAtPosition(i));

至:

String item = (String) adapterView.getItemAtPosition(i);

问题2:

另一个问题是您正在将您的(假定)字符串与==运算符进行比较。

==运算符在比较对象( String是一个Object )时检查引用相等性,您需要在此处检查值相等性。

代替这个:

if (item == "Green") {

您可能要这样做:

if ("Green".equals(item)) {

String.equals()的文档中:

boolean equals (Object anObject)

将此字符串与指定对象进行比较。 当且仅当参数不为null并且是一个String对象,表示与此对象相同的字符序列时,结果为true。

查看有关String相等性的答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM