Как установить цвет фона элемента сетки в зависимости от значения - PullRequest
0 голосов
/ 23 октября 2019

Что я хочу сделать, так это установить цвет строки в зависимости от значения.

Каков наилучший способ сделать это?

У меня есть следующее представление сетки:

<GridView
    android:id="@+id/gvContagem"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:numColumns="1"
    android:textStyle="bold"
    android:layout_below="@+id/headerLabel"
    android:layout_marginTop="33dp" />

И файл .cs:

        readonly JavaList<String> artigos = new JavaList<string>();

        List<string> mItems = new List<string>();

        GridView gvContagem = FindViewById<GridView>(Resource.Id.gvContagem);
        sqliteConnection con = new SqliteConnection("Data Source = " + BaseDados);

        con.Open();

        artigos.Clear();

        string stm = "SELECT Artigo, Descricao FROM Trend";

        using (SqliteCommand cmd = new SqliteCommand(stm, con))
        {
            using (SqliteDataReader rdr = cmd.ExecuteReader())
            {
                while (rdr.Read())
                {

                    artigos.Add(rdr.GetValue(0) + rdr.GetValue(1));


                }

            }

        }

ArrayAdapter<String> adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, artigos);
gvContagem.Adapter = adapter;

Если нет, что мне нужно сделать, чтобы повторить то, что я хочу?

Спасибо

1 Ответ

0 голосов
/ 23 октября 2019

Вам необходимо определить пользовательский адаптер.

Создать новый подкласс BaseAdapter .

public class TextAdapter : BaseAdapter
{
  Context context;

  List<string> Sources;

  public TextAdapter(Context c , List<string> s)
  {
    context = c;
    Sources = s;
  }

  public override int Count
  {
     get { return Sources.Count; }
  }

  public override Java.Lang.Object GetItem(int position)
  {
     return null;
  }

  public override long GetItemId(int position)
  {
     return 0;
  }

  // create a new ImageView for each item referenced by the Adapter
  public override View GetView(int position, View convertView, ViewGroup parent)
  {
     TextView textView;

     if (convertView == null)
     {
       textView =new TextView(context);
       textView.SetLines(1);
     }
     else
     {
        textView = (TextView)convertView;
     }

     textView.SetText(Sources[position],null);

     textView.SetBackgroundColor(Android.Graphics.Color.Red); // set the color as you want 

     return textView;
  }

}

И установить адаптер в Activity

gvContagem.Adapter = new TextAdapter(this,artigos);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...