Java 更改对象';数组列表中的文本颜色

Java 更改对象';数组列表中的文本颜色,java,android,Java,Android,我一直在尝试在数组列表中添加一个颜色参数,但我似乎做不到,我花了无数个小时来尝试,甚至在这里搜索答案 这是我的代码: MainActivity.java: package com.example.ofir.myapplication; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View;

我一直在尝试在数组列表中添加一个颜色参数,但我似乎做不到,我花了无数个小时来尝试,甚至在这里搜索答案

这是我的代码:

MainActivity.java:

package com.example.ofir.myapplication;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ArrayList<Brands> brands = new ArrayList<>();
        brands.add(new Brands("KTM"));
        brands.add(new Brands("BMW"));
        brands.add(new Brands("Suzuki"));
        brands.add(new Brands("Yamaha"));
        brands.add(new Brands("HONDA"));

        BrandAdapter itemsAdapter = new BrandAdapter(this, brands);

        ListView listView = (ListView) findViewById(R.id.brandlist);

        listView.setAdapter(itemsAdapter);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                brands.get(position);
                Intent intent = new Intent(MainActivity.this, infoPage.class );
                startActivity(intent);
            }
        });
    }
}
我想做的是在
Arraylist
中添加颜色,而不是

brands.add(new Brands("KTM"));
我将有以下代码行:

brands.add(new Brands("KTM", Orange));
文本颜色将相应地改变为橙色


感谢advanced提供的任何帮助。

因此,您需要一个包含两个值的对象列表,即品牌名称和颜色。 如果是这样的话,你必须在你的品牌课上阐述颜色

public class Brands {

    private String mBrandName;
    private String colour;

    //constructor with 2 arguments, brand name and colour
    public Brands(String brandName, String colour){
        mBrandName = brandName;
        this.colour = colour;
    }

    public String getBrand(){
        return mBrandName;
    }

    public String getColour(){ //getter of colour
        return colour;
    }
}
然后您可以在列表中添加您的颜色(作为字符串,所以在引号中):

如果要显示颜色,则必须更改适配器,该行:

brandName.setText(brand_item.getBrand());
对这样的事情:

brandName.setText(brand_item.getBrand());
brandName.setColorText(Color.parseColor(brand_item.getColour()));
有关设置颜色的更多信息,您可以在此处找到:

==========旧文本


但我强烈建议添加显示颜色的新文本视图,然后在适配器中查找并查看它(如
brandName
),并将品牌的颜色分配给新创建的文本颜色视图。

因此,您希望列表中的对象具有两个值,即品牌名称和颜色。 如果是这样的话,你必须在你的品牌课上阐述颜色

public class Brands {

    private String mBrandName;
    private String colour;

    //constructor with 2 arguments, brand name and colour
    public Brands(String brandName, String colour){
        mBrandName = brandName;
        this.colour = colour;
    }

    public String getBrand(){
        return mBrandName;
    }

    public String getColour(){ //getter of colour
        return colour;
    }
}
然后您可以在列表中添加您的颜色(作为字符串,所以在引号中):

如果要显示颜色,则必须更改适配器,该行:

brandName.setText(brand_item.getBrand());
对这样的事情:

brandName.setText(brand_item.getBrand());
brandName.setColorText(Color.parseColor(brand_item.getColour()));
有关设置颜色的更多信息,您可以在此处找到:

==========旧文本


但我强烈建议添加新的显示颜色的文本视图,然后在适配器中查找并查看它(如
brandName
),并将品牌的颜色指定给新创建的文本颜色视图。

为什么
Brands
类扩展了
AppCompatActivity
,这意味着它是活动。。据我所知,你只是存储了
品牌的名称
,所以它应该是一些pojo类谢谢你让我知道,我删除了它,基本上我想做的是在主屏幕上列出一个列表,在每个列表项上单击它将移到正确的页面,我试图使每个列表项都具有代表品牌的颜色。为什么您的
品牌
类扩展了
AppCompatActivity
,这意味着它是活动。。据我所知,你只是存储了
品牌的名称
,所以它应该是一些pojo类谢谢你让我知道,我删除了它,基本上我想做的是在主屏幕上列出一个列表,在每个列表项上单击它将移到正确的页面,我想让每个列表项都有代表品牌的颜色。首先谢谢你的回复,我不明白它怎么知道GetColor指的是一种颜色?据它所知,它只是一个简单的字符串?我改变了
品牌
类,它有类型为
String
的field
color
,这个类有一个getter方法
getcolor()
,返回类型为
String
的field
color
。看看
Brand
类。我看到了,但是getcolor不只是字符串的名称吗?什么定义它为颜色?哦,伙计,它是Java的基础:pGetColor是方法(getter),若需要字段颜色的值,可以调用它。当您通过
新品牌(“KTM”,“orange”)构造品牌对象时,您的类中有一个构造函数将构造函数参数分配给对象字段(第一个arg.name,第二个arg.color)
它知道名称是
KTM
,颜色是
橙色
。了解方法、构造函数和面向对象编程。也许这对你有帮助:我明白了,谢谢你的帮助和耐心,我还在编写代码的第一步,你帮了我很多!首先谢谢你的回复,我不明白它怎么知道GetColor指的是一种颜色?据它所知,它只是一个简单的字符串?我改变了
品牌
类,它有类型为
String
的field
color
,这个类有一个getter方法
getcolor()
,返回类型为
String
的field
color
。看看
Brand
类。我看到了,但是getcolor不只是字符串的名称吗?什么定义它为颜色?哦,伙计,它是Java的基础:pGetColor是方法(getter),若需要字段颜色的值,可以调用它。当您通过
新品牌(“KTM”,“orange”)构造品牌对象时,您的类中有一个构造函数将构造函数参数分配给对象字段(第一个arg.name,第二个arg.color)
它知道名称是
KTM
,颜色是
橙色
。了解方法、构造函数和面向对象编程。也许这对你有帮助:我明白了,谢谢你的帮助和耐心,我还在编写代码的第一步,你帮了我很多!