如何更改自定义列表视图排颜色变化交替? [英] How to change Custom Listview row color change alternatively?

查看:207
本文介绍了如何更改自定义列表视图排颜色变化交替?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建自定义的LISTVIEW用于显示搜索结果列表要显示与背景色的每一行我尝试了一些code,但不工作按我的要求,请帮我出

这是我的code

 公共类ListCustomBaseAdapter延伸BaseAdapter {
私有静态的ArrayList<&SearchResult中GT; sea​​rchArrayList;私人LayoutInflater mInflater;公共ListCustomBaseAdapter(上下文的背景下,
        ArrayList的<&SearchResult中GT;结果){
    sea​​rchArrayList =结果;
    mInflater = LayoutInflater.from(上下文);
}公共查看getView(INT位置,查看convertView,父母的ViewGroup){
    ViewHolder持有人;    如果(convertView == NULL){
        convertView = mInflater.inflate(R.layout.custom_row_view,NULL);
        持有人=新ViewHolder();
        holder.txtName =(TextView中)convertView.findViewById(R.id.custNm);
        holder.txtProsNm =(TextView中)convertView.findViewById(R.id.prosNm);
        holder.txtFrmPort =(TextView中)convertView
                .findViewById(R.id.frmPort);
        holder.txtToPort =(TextView中)convertView.findViewById(R.id.ToPort);        convertView.setTag(保持器);
    }其他{
        支架=(ViewHolder)convertView.getTag();
    }    如果(位置%2 == 0){
        holder.txtName.setBackgroundColor(Color.WHITE);
        holder.txtProsNm.setBackgroundColor(Color.WHITE);< -----观的TextView的不整排的变化BGCOLOR
        holder.txtFrmPort.setBackgroundColor(Color.WHITE);
        holder.txtToPort.setBackgroundColor(Color.WHITE);
    }其他{
        holder.txtName.setBackgroundColor(Color.DKGRAY);
        holder.txtProsNm.setBackgroundColor(Color.DKGRAY);
        holder.txtFrmPort.setBackgroundColor(Color.DKGRAY);
        holder.txtToPort.setBackgroundColor(Color.DKGRAY);
    }
    holder.txtName.setText(searchArrayList.get(位置).getCustNm());
    holder.txtProsNm.setText(searchArrayList.get(位置).getProsNm());
    holder.txtFrmPort.setText(searchArrayList.get(位置).getFrmPort());
    holder.txtToPort.setText(searchArrayList.get(位置).getToPort());    返回convertView;
}静态类ViewHolder {
    TextView的txtName的;
    TextView的txtFrmPort;
    TextView的txtToPort;
    TextView的txtProsNm;
}

}

调用适配器

 公共无效的onCreate(捆绑savedInstanceState)抛出的SQLException {
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);    //为微调Connection对象
    CON =新的DatabaseConnection(本);
    尝试{
        //从父活动获取Filtermap
        //软件包中包含的HashMap
        捆扎包装= getIntent()getBundleExtra(salesActList);
        salesLstObj =(地图<弦乐,对象>)wrapper.getSerializable(salesActCriteriaList);
        salesLst = con.searchSalesActivity(salesLstObj);        ArrayList的<&SearchResult中GT;的SearchResult = getSearchResults();        LV =(ListView控件)findViewById(R.id.srListView);
        lv.setAdapter(新ListCustomBaseAdapter(这一点,SearchResult所));
        });
    }赶上(本身的SQLException){
        se.getStackTrace();
        串旗=不及格;
        DialogBox的(标志);}

下面是输出IMG

要显示蓝色区域为灰色交替如何呢?

Custome行视图code

 < TableLayout
    风格=@风格/ TableLayoutStyle
    机器人:方向=垂直
    机器人:paddingBottom会=5DP
    机器人:paddingLeft =5DP
    机器人:paddingRight =5DP>    <的TableRow
        机器人:ID =@ + ID / tblRwCust
        风格=@风格/ TableRowStyle>        <的TextView
            机器人:ID =@ + ID / custNm
            机器人:layout_width =WRAP_CONTENT
            机器人:layout_height =WRAP_CONTENT
            机器人:文字颜色=#FF7F24
            机器人:TEXTSIZE =18sp
            机器人:文字样式=大胆/>
    < /&的TableRow GT;    <的TableRow
        机器人:ID =@ + ID / tblRwPros
        风格=@风格/ TableRowStyle>        <的TextView
            机器人:ID =@ + ID / prosNm
            机器人:layout_width =WRAP_CONTENT
            机器人:layout_height =WRAP_CONTENT
            机器人:文字颜色=#000000/>
    < /&的TableRow GT;    <的TableRow
        机器人:ID =@ + ID / tblRwPort
        风格=@风格/ TableRowStyle>        <的LinearLayout
            机器人:layout_width =WRAP_CONTENT
            机器人:layout_height =WRAP_CONTENT>            <的TextView
                机器人:ID =@ + ID / frmPort
                机器人:layout_width =WRAP_CONTENT
                机器人:layout_height =WRAP_CONTENT
                机器人:layout_marginRight =5DP
                机器人:文字颜色=#808080/>            <的TextView
                机器人:ID =@ + ID / ToPort
                机器人:layout_width =WRAP_CONTENT
                机器人:layout_height =WRAP_CONTENT
                机器人:文字颜色=#808080/>
        < / LinearLayout中>
    < /&的TableRow GT;
< / TableLayout>


解决方案

下面是我与表布局而不是解决方案相对布局

 < TableLayout
    风格=@风格/ TableLayoutStyle
    机器人:方向=垂直
    机器人:paddingBottom会=5DP
    机器人:paddingLeft =5DP
    机器人:paddingRight =5DP
    机器人:ID =@ + ID / myTable的
    机器人:背景=#FFFFFF>

适配器

  holder.myTable =(TableLayout)convertView.findViewById(R.id.myTable);如果(位置%2 == 0){
        holder.myTable.setBackgroundColor(Color.WHITE);
    }其他{
        holder.myTable.setBackgroundColor(Color.GRAY);
    }

I have created custom LISTVIEW for showing searched result list want to show each row with background color I tried out with some code but not working as per my requirement please help me out

here is my code

public class ListCustomBaseAdapter extends BaseAdapter {
private static ArrayList<SearchResult> searchArrayList;

private LayoutInflater mInflater;

public ListCustomBaseAdapter(Context context,
        ArrayList<SearchResult> results) {
    searchArrayList = results;
    mInflater = LayoutInflater.from(context);
}

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

    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.custom_row_view, null);
        holder = new ViewHolder();
        holder.txtName = (TextView) convertView.findViewById(R.id.custNm);
        holder.txtProsNm = (TextView) convertView.findViewById(R.id.prosNm);
        holder.txtFrmPort = (TextView) convertView
                .findViewById(R.id.frmPort);
        holder.txtToPort = (TextView) convertView.findViewById(R.id.ToPort);

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

    if (position % 2 == 0) {
        holder.txtName.setBackgroundColor(Color.WHITE);
        holder.txtProsNm.setBackgroundColor(Color.WHITE);<----- change bgcolor of textview not whole row of View
        holder.txtFrmPort.setBackgroundColor(Color.WHITE);
        holder.txtToPort.setBackgroundColor(Color.WHITE);
    } else {
        holder.txtName.setBackgroundColor(Color.DKGRAY);
        holder.txtProsNm.setBackgroundColor(Color.DKGRAY);
        holder.txtFrmPort.setBackgroundColor(Color.DKGRAY);
        holder.txtToPort.setBackgroundColor(Color.DKGRAY);
    }
    holder.txtName.setText(searchArrayList.get(position).getCustNm());
    holder.txtProsNm.setText(searchArrayList.get(position).getProsNm());
    holder.txtFrmPort.setText(searchArrayList.get(position).getFrmPort());
    holder.txtToPort.setText(searchArrayList.get(position).getToPort());

    return convertView;
}

static class ViewHolder {
    TextView txtName;
    TextView txtFrmPort;
    TextView txtToPort;
    TextView txtProsNm;
}

}

calling adapter

 public void onCreate(Bundle savedInstanceState) throws SQLException {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // Connection object for Spinner
    con = new DatabaseConnection(this);


    try {
        // Get Filtermap from Parent Activity
        // this Bundle contains HashMap
        Bundle wrapper = getIntent().getBundleExtra("salesActList");
        salesLstObj = (Map<String, Object>) wrapper.getSerializable("salesActCriteriaList");
        salesLst = con.searchSalesActivity(salesLstObj);

        ArrayList<SearchResult> searchResults = getSearchResults();

        lv = (ListView) findViewById(R.id.srListView);
        lv.setAdapter(new ListCustomBaseAdapter(this, searchResults));


        });
    } catch (SQLException se) {         
        se.getStackTrace();
        String flag = "fail";
        dialogBox(flag);

}

here is output img

want to show Blue color area to be in gray alternately how to make it?

Custome row view code

  <TableLayout
    style="@style/TableLayoutStyle"
    android:orientation="vertical"
    android:paddingBottom="5dp"
    android:paddingLeft="5dp"
    android:paddingRight="5dp" >

    <TableRow
        android:id="@+id/tblRwCust"
        style="@style/TableRowStyle" >

        <TextView
            android:id="@+id/custNm"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#FF7F24"
            android:textSize="18sp"
            android:textStyle="bold" />
    </TableRow>

    <TableRow
        android:id="@+id/tblRwPros"
        style="@style/TableRowStyle" >

        <TextView
            android:id="@+id/prosNm"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#000000" />
    </TableRow>

    <TableRow
        android:id="@+id/tblRwPort"
        style="@style/TableRowStyle" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/frmPort"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="5dp"
                android:textColor="#808080" />

            <TextView
                android:id="@+id/ToPort"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="#808080" />
        </LinearLayout>
    </TableRow>
</TableLayout>

解决方案

Here is my solution with Table layout instead Relative layout

<TableLayout
    style="@style/TableLayoutStyle"
    android:orientation="vertical"
    android:paddingBottom="5dp"
    android:paddingLeft="5dp"
    android:paddingRight="5dp" 
    android:id="@+id/myTable"
    android:background="#FFFFFF">

in adapter

holder.myTable = (TableLayout) convertView.findViewById(R.id.myTable);

if (position % 2 == 0) {
        holder.myTable.setBackgroundColor(Color.WHITE);
    } else {
        holder.myTable.setBackgroundColor(Color.GRAY);
    }

这篇关于如何更改自定义列表视图排颜色变化交替?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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