0

我正在尝试从数据库中设置RGB颜色。ListView我将如何将其设置在ListAdapter?

它只显示数据库中的最后一个颜色值。

ListAdapter adapter = new SimpleAdapter(this, contactList,
            R.layout.list_item,
            new String[] {  TAG_GRPNAME, TAG_QNT, TAG_BUDGET, TAG_STOCK, TAG_DIFF, TAG_DIFF_P },//TAG_DIFF_P
            new int[] {
                     R.id.l2, R.id.l3, R.id.l4, R.id.l5, R.id.l6, R.id.l7}){
          @Override
          public View getView(int position, View convertView, ViewGroup parent) {
              View v = convertView;
              if (v == null) {
                  LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                  v = vi.inflate(R.layout.list_item, null);
              }
              TextView text1 = (TextView) v.findViewById(R.id.l7);
              HashMap<String, String> map=contactList.get(position);
              map.get(TAG_COLOR);
              String[] ARGB = COLOR.split(" ");
              String V1=ARGB[0];
              String V2=ARGB[1];
              String V3=ARGB[2];
              String V4=ARGB[3];
              a=Integer.parseInt(V1);
              r=Integer.parseInt(V2);
              g=Integer.parseInt(V3);
              b=Integer.parseInt(V4);
              text1.setBackgroundColor(Color.rgb(r, g, b));

              return super.getView(position, v, parent);
          }
4

2 回答 2

0

您应该返回新的膨胀视图getView

更改 return super.getView(position, v, parent);return v;

getView 的示例如下:

@Override
  public View getView(int position, View convertView, ViewGroup parent) {
    View rowView = convertView;
    if (rowView == null) {
      LayoutInflater inflater = context.getLayoutInflater();
      rowView = inflater.inflate(R.layout.list_item, null);
      ViewHolder viewHolder = new ViewHolder();
      viewHolder.text1 = (TextView) rowView.findViewById(R.id.l7);
       rowView.setTag(viewHolder);
    }

    ViewHolder holder = (ViewHolder) rowView.getTag();
     HashMap<String, String> map=contactList.get(position);
              map.get(TAG_COLOR);
              String[] ARGB = COLOR.split(" ");
              String V1=ARGB[0];
              String V2=ARGB[1];
              String V3=ARGB[2];
              String V4=ARGB[3];
              a=Integer.parseInt(V1);
              r=Integer.parseInt(V2);
              g=Integer.parseInt(V3);
              b=Integer.parseInt(V4);
              holder.text1.setBackgroundColor(Color.rgb(r, g, b));

    return rowView;
  }


static class ViewHolder {
    public TextView text1 ;
  }
于 2013-08-05T07:23:45.140 回答
0
ListAdapter adapter = new SimpleAdapter(this, dataList,
            R.layout.list_item,
            new String[] {  TAG_GRPNAME, TAG_QNT, TAG_BUDGET, TAG_STOCK, TAG_DIFF, TAG_DIFF_P, },
            new int[] {
                     R.id.l2, R.id.l3, R.id.l4, R.id.l5, R.id.l6, R.id.l7}){
         @Override
         public View getView(int position, View convertView, ViewGroup parent) {
             View v = convertView;
             if (v == null) {
                 LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                 v = vi.inflate(R.layout.list_item, null);
             }
             text1 = (TextView) v.findViewById(R.id.l7);


                      String rgbColor=  dataList.get(position).get(TAG_COLOR);
                      String[] ARGB = rgbColor.split(" ");     
                      a=Integer.parseInt(ARGB[0]);
                      r=Integer.parseInt(ARGB[1]);
                      g=Integer.parseInt(ARGB[2]);
                      b=Integer.parseInt(ARGB[3]);                        
                      text1.setBackgroundColor(Color.rgb(r, g, b));
                      return super.getView(position, v, parent);
          }

     };
于 2013-08-13T11:25:02.083 回答