如何更改自定义列表视图排颜色变化交替? [英] How to change Custom Listview row color change alternatively?
本文介绍了如何更改自定义列表视图排颜色变化交替?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我创建自定义的LISTVIEW用于显示搜索结果列表要显示与背景色的每一行我尝试了一些code,但不工作按我的要求,请帮我出
这是我的code
公共类ListCustomBaseAdapter延伸BaseAdapter {
私有静态的ArrayList<&SearchResult中GT; searchArrayList;私人LayoutInflater mInflater;公共ListCustomBaseAdapter(上下文的背景下,
ArrayList的<&SearchResult中GT;结果){
searchArrayList =结果;
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屋!
查看全文