Android - ListView有2种不同的颜色

时间:2012-04-24 20:01:28

标签: android colors background

我有一个ListView,我想更改它的Backgroundcolor。它应该是这样的。 1.Item =灰色; 2.项目;白色; 3.项目=灰色; 4.项目=白色等所以它应该有2个背景颜色。我试图在近2个小时内完成这项任务。我很困惑。我无法找到解决方案。我希望你们中的某个人可以帮助我。

我尝试过:

    for(int counter = 0; counter < itemList.size(); counter++){
            if( adapter.getItem(position) %2 == 1 ){
               Layout.setBackgroundColor(Color.GREY)
                    };
          else{
            Layout.setBackgroundColor(Color.WHITE);
              }

所以这是我的漏洞代码。我希望有人能告诉我:

MainActivity

public class MainActivity extends Activity implements OnItemClickListener {

    ListView lview3;
    ListViewCustomAdapter adapter;
    private ArrayList<Object> itemList;
    private ItemBean bean;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        prepareArrayLits();
        lview3 = (ListView) findViewById(R.id.listView1);
        adapter = new ListViewCustomAdapter(this, itemList);
        lview3.setAdapter(adapter);




        lview3.setOnItemClickListener(this);
    }

    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
        // TODO Auto-generated method stub
         RelativeLayout Layout = (RelativeLayout) findViewById(R.id.relativeLayout1);
        ItemBean bean = (ItemBean) adapter.getItem(position);
         for(int counter = 0; counter < itemList.size(); counter++){
             adapter.getItem(position);
            Layout.setBackgroundColor(Color.CYAN);}

        Toast.makeText(this, "Title => "+bean.getTitle()+" \n Description => "+bean.getDescription(), Toast.LENGTH_SHORT).show();
    }

    /* Method used to prepare the ArrayList,
     * Same way, you can also do looping and adding object into the ArrayList.
     */
    public void prepareArrayLits()
    {
        itemList = new ArrayList<Object>();

        AddObjectToList(R.drawable.ic_add, "add", "Add desc", "2");
        AddObjectToList(R.drawable.ic_delete, "Delete", "Delete desc", "2");
        AddObjectToList(R.drawable.ic_down, "Down", "Down desc", "2");
        AddObjectToList(R.drawable.ic_info, "Information", "Information desc", "2");
        AddObjectToList(R.drawable.ic_help, "Help", "Help desc", "2");
        AddObjectToList(R.drawable.ic_download, "Download", "Download desc", "2");
        AddObjectToList(R.drawable.ic_mail, "Mail", "Mail desc", "2");
        AddObjectToList(R.drawable.ic_search, "Search", "Search desc", "2");
        AddObjectToList(R.drawable.ic_settings, "Settings", "Settings desc", "2");

    }

    // Add one item into the Array List
    public void AddObjectToList(int image, String title, String desc, String duration)
    {

        bean = new ItemBean();
        bean.setduration(duration);
        bean.setDescription(desc);
        bean.setImage(image);
        bean.setTitle(title);
        itemList.add(bean);
    }



}

ItemBean

public class ItemBean 
{
    String title;
    String description;
    int image;
    String duration;

    public String getTitle() {
        return title;
    }
    public String getDuration() {
        return duration;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public int getImage() {
        return image;
    }

    public void setImage(int image) {
        this.image = image;
    }   

    public void setduration(String duration) {
        this.duration = duration;
    }   
}

ListViewCustomAdapter

public class ListViewCustomAdapter extends BaseAdapter{

    ArrayList<Object> itemList;

    public Activity context;
    public LayoutInflater inflater;

    public ListViewCustomAdapter(Activity context,ArrayList<Object> itemList) {
        super();

        this.context = context;
        this.itemList = itemList;

        this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public int getCount() {
        // TODO Auto-generated method stub
        return itemList.size();
    }

    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return itemList.get(position);
    }

    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    public static class ViewHolder
    {
        ImageView imgViewLogo;
        TextView txtViewTitle;
        TextView txtViewDescription;
        TextView duration;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        ViewHolder holder;
        if(convertView==null)
        {
            holder = new ViewHolder();
            convertView = inflater.inflate(R.layout.items, null);

            holder.imgViewLogo = (ImageView) convertView.findViewById(R.id.imgViewLogo);
            holder.txtViewTitle = (TextView) convertView.findViewById(R.id.txtViewTitle);
            holder.txtViewDescription = (TextView) convertView.findViewById(R.id.txtViewDescription);
            holder.duration = (TextView) convertView.findViewById(R.id.duration);

            convertView.setTag(holder);
        }
        else
            holder=(ViewHolder)convertView.getTag();

        ItemBean bean = (ItemBean) itemList.get(position);

        holder.imgViewLogo.setImageResource(bean.getImage());
        holder.txtViewTitle.setText(bean.getTitle());
        holder.txtViewDescription.setText(bean.getDescription());
        holder.duration.setText(bean.getDuration());



        return convertView;
    }

}

XML布局: * *

<RelativeLayout     android:id="@+id/relativeLayout1"   android:layout_width="fill_parent"  android:layout_height="wrap_content"    android:background="@drawable/list_selector"    xmlns:android="http://schemas.android.com/apk/res/android"  android:padding="5dip">

    <ImageView
        android:layout_width="50dip"
        android:layout_height="50dip"
        android:padding="3dip"  
        android:id="@+id/imgViewLogo"
        android:src="@drawable/icon"
        android:layout_alignParentLeft="true"
        android:layout_centerInParent="true"
        android:background="@drawable/image_bg" 
        android:layout_marginRight="5dip"
        android:scaleType="center"
        >
    </ImageView>

    <TextView
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/imgViewLogo"
        android:text="TextView"
        android:layout_width="wrap_content"
        android:id="@+id/txtViewTitle"
        android:layout_toRightOf="@+id/imgViewLogo"
        android:textColor="#040404"
        android:typeface="sans" 
        android:textSize="20dip"
        android:textStyle="bold"
        android:layout_marginRight="15dp"
        >
    </TextView>

    <TextView
        android:layout_height="wrap_content"
        android:text="TextView"
        android:layout_width="wrap_content"
        android:id="@+id/txtViewDescription"

         android:textColor="#343434"
        android:textSize="15dip"
        android:layout_marginTop="1dip"
        android:layout_toRightOf="@+id/imgViewLogo"
        android:layout_below="@+id/txtViewTitle"
        android:layout_marginLeft="2dip"
        android:layout_marginRight="15dp"
        >
    </TextView>
    <TextView
        android:id="@+id/duration"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/txtViewTitle"
        android:gravity="right"
        android:layout_marginRight="5dip"
        android:textSize="15dip"
        android:textColor="#10bcc9"
        android:textStyle="bold"/>

     <ImageView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/arrow"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"

        />

</RelativeLayout>

布局: * *

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"


    >


    <ListView 
        android:id="@+id/listView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:divider="#b5b5b5"
        android:dividerHeight="1dp"
        android:listSelector="@drawable/list_selector" 
        />



</LinearLayout>

每个提示都会有所帮助, 感谢。

5 个答案:

答案 0 :(得分:12)

不要使用for循环来设置事后的背景颜色。在适配器的getView方法中执行此操作。试试这个:

public View getView(int position, View convertView, ViewGroup parent) {

    /* remainder is unchanged */

    convertView.setBackgroundColor(position % 2 == 0 ? Color.WHITE : Color.GREY);
    return convertView;
}

答案 1 :(得分:3)

这是使用选择器切换器更改背景的另一种方法。 使用此方法将保留选择器的悬停和焦点颜色。

Team:
team_id
team_name
division

答案 2 :(得分:0)

您可以通过在自定义适配器的getView函数中设置背景来轻松完成此操作。

试试这段代码:

    if(position % 2 == 0)
            convertView.setBackgroundColor(Color.GREY);
    else
            convertView.setBackgroundColor(Color.WHITE);

答案 3 :(得分:0)

您可以根据传入的项目位置从getView返回不同的视图。

答案 4 :(得分:-1)

我相信你可以根据职位

来做到这一点
        if (position == 0)
        {
            view.SetBackgroundColor(Android.Graphics.Color.gray);  
        }
        else if (position == 1)
        {
            view.SetBackgroundColor(Android.Graphics.Color.white);
        }

等取决于您拥有多少个职位。