Android - 具有 2 种不同颜色的 ListView [英] Android - ListView with 2 different Colors

查看:21
本文介绍了Android - 具有 2 种不同颜色的 ListView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 ListView,我想更改它的 Backgroundcolor.它应该是这样的.1.项目=灰色;2.项目;白色的;3.项目=灰色;4.项目=白色等.所以它应该有2个背景色.我试图将其归档近 2 小时.我越来越糊涂了.我无法找到解决方案.我希望你们中的某个人可以帮助我.

I have got a ListView and I want to change the Backgroundcolor of it. It should go like this. 1.Item = grey; 2. Item; white; 3. Item = grey; 4. Item = white etc. So it should have 2 backgroundcolors. I am trying to archieve that for almost 2 hours. I am getting confused. I cant get up with a Solution. I hope someone of you could help me.

我试过了:

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

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

So here is my hole code. I hope someone of you can tell me:

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()+" 
 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>

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

Every Tip would be helpful, thanks.

推荐答案

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

Don't use that for loop to set the background color after the fact. Do it in your getView method of your adapter. Try this:

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

    /* remainder is unchanged */

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

这篇关于Android - 具有 2 种不同颜色的 ListView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆