2016-06-21 12 views
0

色のリストを作成しました。テキストの色を変更したい場合は、TextView "すぐに誰かがリスト.Iの項目は次のコードが、次のコードで間違っているかを把握することができませんでしその動作していない.I mをしようとしたのいずれかをクリックして:色のリストから選択した色に従って、Androidの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:

getItemAtPosition()の代わりにgetItemIdAtPosition()と呼んでいるようです。

あなたが所定の位置にあなたのアダプタからデータを取得したいと思い、あなたは次のように変更する必要がありますと仮定:

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

へ:

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

問題2:

もう1つの問題は、(おそらく)文字列を==演算子と比較していることです。

==演算子は、オブジェクト(StringObject)を比較するときに参照の等価性をチェックし、ここで値の等価性をチェックする必要があります。

の代わりに、この:String.equals()のドキュメントから

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

if (item == "Green") { 

あなたはこれをしたいかもしれません

boolean equals (Object anObject)

はこれを比較文字列を指定した オブジェクトに追加します。引数がnullでなく、 が、 このオブジェクトと同じ文字シーケンスを表すStringオブジェクトである場合にのみ、結果がtrueになります。

this answerStringでチェックしてください。

関連する問題