Android将颜色设置为listview项目

时间:2011-11-24 13:35:54

标签: android android-listview

我正在我的应用程序中使用列表视图,我正在从数据库填充。我想要做的事情取决于一些计算,例如将单个列表视图项的文本颜色设置为红色。有没有办法做到这一点?

以下是我填写listview的方法:

Cursor cursor = dbHelper.executeSQLQuery(sql);
    if(cursor.getCount()==0){
        Log.i("Cursor Null","CURSOR IS NULL");
        nocards.setVisibility(View.VISIBLE);
    } else if(cursor.getCount()>0){
        nocards.setVisibility(View.GONE);

        for(cursor.move(0); cursor.moveToNext(); cursor.isAfterLast()) {
                text = cursor.getString(cursor.getColumnIndex("Title"));
                Log.i("Show Title","Show Title : "+text); 
                collId = Integer.parseInt(cursor.getString(cursor.getColumnIndex("CollID")));
                Log.i("CollId","Collection ID : "+collId);  

                if (isLoggedIn) {
                    for(int k=0; k<ObjectID.size(); k++){
                        if (ObjectID.get(k) == collId){
                            cardsCount = OwnedCardsCount.get(k);
                        }
                    }
                } else {
                       cardsCount = cursor.getString(cursor.getColumnIndex("TotalCards"));
                }

                String sqlite2 = "SELECT media_id FROM collection_media WHERE collection_id="+collId+" AND media_type_id="+fronImage;
                 Cursor bg = dbHelper.executeSQLQuery(sqlite2);
                 if (bg.getCount() == 0) {
                     bg.close();
                 } else if (bg.getCount() > 0) {
                     for (bg.move(0); bg.moveToNext(); bg.isAfterLast()) {

                         int mediId = Integer.parseInt(bg.getString(bg.getColumnIndex("media_id")));
                         Log.i("","mediId : " + mediId);
                         //if(storageID==1){
                            path = rpc.getPublicPathsInternal(servername, fronImage, mediId, Recommended.this);
                        /*} else if(storageID==2){
                            path = rpc.getPublicPathsExternal(servername, fronImage, mediId);
                        }*/
                         Log.v("","path: "+path);
                     }
                 }


                array.add(collId);
                hm = new HashMap<String, Object>();
                hm.put(IMAGE, path);
                hm.put(TITLE, text);
                hm.put(CARDS_COUNT, cardsCount +" Stampii");
                items.add(hm);
        }
    }

        final SimpleAdapter adapter = new SimpleAdapter(this, items, R.layout.main_listview,
                new String[]{TITLE, CARDS_COUNT, IMAGE}, new int[]{ R.id.main_name, R.id.main_info, R.id.main_img});
        lv1.setAdapter(adapter);
        lv1.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> a, View v, int position, long id) 
            {
                Intent previewMessage = new Intent(Recommended.this, MyCollectionId.class);
                TabGroupActivity parentActivity = (TabGroupActivity)getParent();
                previewMessage.putExtra("collection_id", array.get(position));
                previewMessage.putExtra("opentype", 1);
                parentActivity.startChildActivity("MyCollectionId", previewMessage);
            }
        });

和我的main_listview.xml的代码:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:orientation="horizontal"
  android:layout_height="wrap_content">

  <RelativeLayout
  android:layout_width="fill_parent"
  android:orientation="vertical"
  android:layout_height="wrap_content">

        <ImageView          
            android:id="@+id/main_img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_margin="4dp"/>


        <TextView
            android:id="@+id/main_name"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textSize="14dp"
            android:textColor="#000000"
            android:textStyle="bold"
            android:layout_toRightOf="@+id/main_img"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"/>

        <TextView
            android:id="@+id/main_info"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/main_name"
            android:layout_toRightOf="@+id/main_img"
            android:textSize="12dp"
            android:textColor="#666666"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"/>

         <ImageView 
            android:id="@+id/arrow"
            android:src="@drawable/ic_arrow_right"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginRight="10dp"
            android:layout_centerVertical="true" />


  </RelativeLayout>

</LinearLayout>

所以我想将main_name的textColor设置为红色。有什么建议吗?

4 个答案:

答案 0 :(得分:2)

你需要这样的课程:

public class StillSimpleAdapter extends SimpleAdapter {

  public StillSimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
    super(context, data, resource, from, to);
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    View view = super.getView(position, convertView, parent);
    if (timeForRed(position)) ((TextView) view.findViewById(R.id.main_name)).setTextColor(0xffff0000);
    return view;
  }

}

在代码中使用它而不是SimpleAdapter,并在某处实现timeForRed()方法,并且会很高兴。

答案 1 :(得分:1)

为单个列表项创建XML。然后创建自己的适配器,覆盖getView()功能。在此函数中,对列表项布局进行膨胀,从数据中填充控件并根据需要设置textview颜色。

答案 2 :(得分:1)

使用自定义列表适配器

Custom Android ListAdapter

OR

Android Lists: ListActivity and ListView CustomAdapter

这可以帮助你......享受

答案 3 :(得分:0)

您可以创建一个扩展BaseAdapter类的类。 BaseAdapter类为您提供了一些覆盖方法; getView()就是其中之一 - 在这种方法中,您可以根据需要自定义视图。

以下是此示例项目;你可以得到这个想法:

https://ujjwal.opendrive.com/files?51477570_t4x6y