![](/img/trans.png)
[英]How to change the Textcolor of a textview according to the color chosen alert dialog android
[英]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.