2016-06-21 53 views
0

的列表中选择我做了颜色的名单,我想改变ID为“用户名”的TextView文本的颜色改变机器人的TextView的文本颜色只要有人点击列表。我的项目的一个尝试下面的代码,但它不工作。我中号无法弄清楚什么是错在下面的代码:如何根据所选择的颜色,从色彩

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 
         } 
        } 
       } 
     ); 
} 
+0

你知道这样的Java的基础知识,如何在Java中比较字符串? – Selvin

+0

使用ContextCompat.getColor(context,R.color.XXX)获取颜色! – XxGoliathusxX

回答

1

问题1:

好像你打电话getItemIdAtPosition(),而不是getItemAtPosition()

假设你想在给定的位置,从你的适配器中的数据,你应该改变如下:

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

要:

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

问题2:

另一个问题是你比较你的(所谓的)字符串与==运算符。

==运算符在比较对象时检查引用相等(StringObject)并且您需要在此处检查值相等性。

取而代之的是:

if (item == "Green") { 

你可能想这样做:

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

String.equals()文件:

boolean equals (Object anObject)

比较此字符串到指定的 对象。当且仅当该参数不是null和 是表示字符 此对象的相同序列的字符串对象中的结果为真。

结账this answerString等于。