2016-06-21 51 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等於。