为ListView中的相同项目创建相同的背景颜色

时间:2016-04-18 10:20:48

标签: android listview background-color

我有一个ListView我希望比较我的项目。 如果项目相同,我想为ListView中的这些项目制作相同的背景颜色。 你能帮帮我吗?

2 个答案:

答案 0 :(得分:0)

您必须为列表创建适配器。 在适配器内部,您可以像#34;定制"单行的布局

答案 1 :(得分:0)

您可以通过ListView的自定义适配器执行此操作。

在以下适配器(带有SQL Lite数据库查询的ListView的光标适配器作为源数据)中,背景设置为 getView 方法中的交替颜色。检测相同项目的代码可能会更复杂,并且取决于数据。

/**
 * Created by Mike092015 on 17/02/2016.
 */
public class Database_Inspector_ProductsDB_Adadpter extends CursorAdapter {
    public Database_Inspector_ProductsDB_Adadpter(Context context, Cursor cursor, int flags) {
        super(context, cursor, 0);
    }

    @Override
    public View getView(int position, View convertview, ViewGroup parent) {
        View view = super.getView(position, convertview, parent);
        Context context = view.getContext();
        if (position % 2 == 0) {
            view.setBackgroundColor(ContextCompat.getColor(context, R.color.colorlistviewroweven));
        } else {
            view.setBackgroundColor(ContextCompat.getColor(context, R.color.colorlistviewrowodd));
        }
        return view;
    }


    @Override
    public void bindView(View view, Context context, Cursor cursor) {

        TextView textviewproductid = (TextView) view.findViewById(R.id.adipe_productsdb_id);
        TextView textviewproductname = (TextView) view.findViewById(R.id.adipe_productsdb_name);
        TextView textviewproductorder = (TextView) view.findViewById(R.id.adipe_productsdb_order);
        TextView textviewproductaisle = (TextView) view.findViewById(R.id.adipe_productsdb_aisle);
        TextView textviewproductuses = (TextView) view.findViewById(R.id.adipe_productsdb_uses);
        TextView textviewproductnotes = (TextView) view.findViewById(R.id.adipe_productsdb_notes);

        textviewproductid.setText(cursor.getString(ShopperDBHelper.PRODUCTS_COLUMN_ID_INDEX));
        textviewproductname.setText(cursor.getString(ShopperDBHelper.PRODUCTS_COLUMN_NAME_INDEX));
        textviewproductorder.setText(cursor.getString(ShopperDBHelper.PRODUCTS_COLUMN_ORDER_INDEX));
        textviewproductaisle.setText(cursor.getString(ShopperDBHelper.PRODUCTS_COLUMN_AISLE_INDEX));
        textviewproductuses.setText(cursor.getString(ShopperDBHelper.PRODUCTS_COLUMN_USES_INDEX));
        textviewproductnotes.setText(cursor.getString(ShopperDBHelper.PRODUCTS_COLUMN_NOTES_INDEX));

    };
    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        return LayoutInflater.from(context).inflate(R.layout.activity_database_inspect_productsdb_entry,parent, false);
    }
}