如何根据从颜色列表

时间:2016-06-21 17:14:00

标签: android listview textview onitemclicklistener

我制作了一个颜色列表,我想更改TextView的文字颜色,其中包含ID"用户名"只要有人点击列表中的一个项目。我尝试了下面的代码,但它不起作用。我无法弄清楚以下代码中的错误:

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

1 个答案:

答案 0 :(得分: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时,结果才为真   是一个String对象,表示与之相同的字符序列   这个对象。

String平等时查看this answer