Android为ListView的Item设置不同颜色背景

本文介绍如何在Android应用中为ListView设置多种布局样式,包括实现步骤与关键代码示例。通过重写BaseAdapter的方法,可以灵活地根据不同位置显示不同类型的视图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

importjava.util.ArrayList; 
importjava.util.HashMap; 
importandroid.os.Bundle; 
importandroid.view.View; 
importandroid.widget.AdapterView; 
importandroid.widget.AdapterView.OnItemClickListener; 
importandroid.widget.ListView; 
importandroid.app.Activity; 
/**
 * Demo描述:
 * 为ListView的Item设置不同的布局.
 * 例如在该例子中ListView的第一个Item显示一张
 * 图片,其余的Item都显示文字.
 
 * 为了达到此目的需要重写BaseAdapter中的
 * 1 getViewTypeCount()和getItemViewType(int position)方法.
 *   1.1在getViewTypeCount中指定一共有几种不同的item
 *      在此返回2即可.
 *   1.2在getItemViewType(int position)中需要依据position的不同
 *      返回不同的Type.
 * 2 在getView()方法中针对不同的Type为Item设置布局
 *   2.1得到当前位置(position)时的Type即代码:
 *       currentType= getItemViewType(position);
 *   2.2依据Type的不同为Item设置布局
 
 *
 */ 
publicclassMainActivity extendsActivity { 
    privateListView mListView; 
    @Override 
    protectedvoidonCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        init(); 
    
    privatevoidinit(){ 
        mListView=(ListView) findViewById(R.id.listview); 
       regeditedSelectAdapter=new RegeditedSelectAdapter(EmployeePlaySelect.this,user_Info_list);
                        lv.setAdapter(regeditedSelectAdapter);
 
       
        mListView.setOnItemClickListener(newItemClickListenerImpl()); 
    
    
}
/**适配器**/
public class RegeditedSelectAdapter extends BaseAdapter {
    private Context context;
    private ArrayList<PlaySelect> reg_list;
    private LayoutInflater layoutInflater;
    private final int TYPE_COUNT=2;
    private final int FIRST_TYPE=0;
    private final int OTHERS_TYPE=1;
    private int currentType;


    public RegeditedSelectAdapter(Context context, ArrayList<PlaySelect> reg_list) {
        this.context = context;
        this.reg_list = reg_list;
        layoutInflater = LayoutInflater.from(context);
    }


    @Override
    public int getCount() {
       /* if (reg_list==null) {
            return 0;
        } else {
        }*/
        return reg_list.size();
    }


    @Override
    public Object getItem(int position) {
        /*if (reg_list==null) {
            return null;
        } else {
            if (position>0) {
                return reg_list.get(position-1);
            } else {
            }*/
            return reg_list.get(position);
        //}
    }


    @Override
    public long getItemId(int position) {
        return position;
    }
/***item不同布局设置***/
    @Override
    public int getViewTypeCount() {
        return TYPE_COUNT;
    }


    @Override
    public int getItemViewType(int position) {
        if (position%2==0) {
            return FIRST_TYPE;
        } else {
            return OTHERS_TYPE;
        }
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View firstItemView = null;
        View othersItemView=null;
        //获取到当前位置所对应的Type
        currentType= getItemViewType(position);
        System.out.println("type="+currentType);
        PlaySelect playSelect = reg_list.get(position);//自己的list集合
        if (currentType== FIRST_TYPE) {
            firstItemView = convertView;
            FirstRegViewHolder regViewHolder = null;
        if (firstItemView == null) {
            regViewHolder = new FirstRegViewHolder();
            firstItemView = layoutInflater.inflate(R.layout.play_first_select_xml, null);
            regViewHolder.col_name = (TextView) firstItemView.findViewById(R.id.col_name);
            regViewHolder.outgo_bgt_adjust = (TextView) firstItemView.findViewById(R.id.outgo_bgt_adjust);
            regViewHolder.outgo_execu = (TextView) firstItemView.findViewById(R.id.outgo_execu);
            regViewHolder.outgo_total = (TextView) firstItemView.findViewById(R.id.outgo_total);
            regViewHolder.outgobgt_bg = (TextView) firstItemView.findViewById(R.id.outgobgt_bg);
            regViewHolder.loaned = (TextView) firstItemView.findViewById(R.id.loaned);
            regViewHolder.current_available_e = (TextView) firstItemView.findViewById(R.id.current_available_e);
            firstItemView.setTag(regViewHolder);
        } else {
            regViewHolder = (FirstRegViewHolder) firstItemView.getTag();
        }


        regViewHolder.col_name.setText(playSelect.getCol_name());
        regViewHolder.outgo_bgt_adjust.setText(playSelect.getOutgo_bgt_adjust());
        regViewHolder.outgobgt_bg.setText(playSelect.getOutgobgt_bg());
        regViewHolder.outgo_total.setText(playSelect.getOutgo_total());
        regViewHolder.current_available_e.setText(playSelect.getCurrent_available_e());
        regViewHolder.loaned.setText(playSelect.getLoaned());
        regViewHolder.outgo_execu.setText(playSelect.getOutgo_execu());
            convertView=firstItemView;
        }else{
            othersItemView = convertView;
            SecondRegViewHolder sregViewHolder = null;
            if (othersItemView == null) {
                sregViewHolder = new SecondRegViewHolder();
                othersItemView = layoutInflater.inflate(R.layout.play_select_xml, null);
                sregViewHolder.col_name = (TextView) othersItemView.findViewById(R.id.col_name);
                sregViewHolder.outgo_bgt_adjust = (TextView) othersItemView.findViewById(R.id.outgo_bgt_adjust);
                sregViewHolder.outgo_execu = (TextView) othersItemView.findViewById(R.id.outgo_execu);
                sregViewHolder.outgo_total = (TextView) othersItemView.findViewById(R.id.outgo_total);
                sregViewHolder.outgobgt_bg = (TextView) othersItemView.findViewById(R.id.outgobgt_bg);
                sregViewHolder.loaned = (TextView) othersItemView.findViewById(R.id.loaned);
                sregViewHolder.current_available_e = (TextView) othersItemView.findViewById(R.id.current_available_e);
                othersItemView.setTag(sregViewHolder);
            } else {
                sregViewHolder = (SecondRegViewHolder) othersItemView.getTag();
            }


            sregViewHolder.col_name.setText(playSelect.getCol_name());
            sregViewHolder.outgo_bgt_adjust.setText(playSelect.getOutgo_bgt_adjust());
            sregViewHolder.outgobgt_bg.setText(playSelect.getOutgobgt_bg());
            sregViewHolder.outgo_total.setText(playSelect.getOutgo_total());
            sregViewHolder.current_available_e.setText(playSelect.getCurrent_available_e());
            sregViewHolder.loaned.setText(playSelect.getLoaned());
            sregViewHolder.outgo_execu.setText(playSelect.getOutgo_execu());
            convertView=othersItemView;
        }
        return convertView;
    }


    class FirstRegViewHolder {
        private TextView bgt_year;//预算年度
        private TextView outgobgt_bg;//期初额
        private TextView col_name;//栏目名称
        private TextView outgo_total;//预算总额
        private TextView outgo_bgt_adjust;//调整额
        private TextView outgo_execu;//实际支出额
        private TextView loaned;//贷款额
        private TextView current_available_e;//目前可用额
        private TextView pk_colarch;//栏目代码
    }
    class SecondRegViewHolder {
        private TextView bgt_year;//预算年度
        private TextView outgobgt_bg;//期初额
        private TextView col_name;//栏目名称
        private TextView outgo_total;//预算总额
        private TextView outgo_bgt_adjust;//调整额
        private TextView outgo_execu;//实际支出额
        private TextView loaned;//贷款额
        private TextView current_available_e;//目前可用额
        private TextView pk_colarch;//栏目代码
    }
}
如图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值