【发布时间】:2013-12-03 00:00:40
【问题描述】:
大家晚上好,
制作一个简单的预算应用程序,当它是成本时想要行的红色背景,当它是收入时想要绿色背景。让列表视图正常工作,现在只需深入研究颜色。已经想出在点击时更改行颜色,但现在希望对行进行“初始”着色。 (这是我的第一个应用,所以还在学习)
我已经尝试过 - 自定义 SimpleAdapter 包装器:
public class RC_Adapter extends SimpleAdapter {
Context contextpass;
public RC_Adapter(Context context, List<? extends Map<String, ?>> data,
int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
contextpass = context;
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position,View convertView,ViewGroup parent){
TextView tv = (TextView) convertView.findViewById(R.id.c1);
String s = tv.getText().toString();
if(s.equals("Cost")){
convertView.setBackgroundResource(R.color.valencia_red);}
else{
convertView.setBackgroundResource(R.color.t_green);
}
return convertView;
}
}
实现:
RC_Adapter sd=new RC_Adapter(this,arrCosts,R.layout.costlist,
new String[]{"id","desc","cost"},
new int[]{R.id.c1,R.id.c2,R.id.c3});
我也试过了:
SimpleAdapter.ViewBinder binder = new SimpleAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Object data,
String textRepresentation) {
// TODO Auto-generated method stub
TextView tv = (TextView) view.findViewById(R.id.c1);
String s = tv.getText().toString();
if(s.equals("Cost")){
view.setBackgroundResource(R.color.valencia_red);}
else{
view.setBackgroundResource(R.color.t_green);
}
return false;
}
};
sd.setViewBinder(binder);
只要我调用启动更改的简单适配器的函数,两者都会使程序崩溃。我没有尝试同时调用两者。我尝试了扩展课程,然后尝试了活页夹。代码中有明显的错误吗?我一直在尝试调整多种不同的东西以使其正常工作(例如Change color of an item in ListView with SimpleAdapter)
感谢您的帮助!一直很感激
【问题讨论】:
-
崩溃日志说什么?请提供堆栈跟踪。
-
第一个错误(但之后继续)是 4 Span_Exclusive_Exclusive - 跨度不能有零长度)。然后是致命异常:main、java.lang.NullPointerException,然后是大量的 at...错误。 NullPointerException 正下方的一个位于 com.example.simplebudget.RC_Adapter.getView(RC_Adapter.java:28)
标签: android listview colors row simpleadapter