我希望我ListView
的每个项目都持有View
,因此我编写了自己的ArrayAdapter
. 也就是说, myListView
是View
now 而不是TextView
.
但是现在,我该如何管理 中的项目ListView
?例如,如果我想改变视图的背景颜色,如果我把它setBackgroundColor(Color.BLACK)
放在View
.
这是我的自定义 ArrayAdapter 代码:
public class DataViewAdapter extends ArrayAdapter<DataView>{
Context context;
int layoutResourceId;
ArrayList<DataView> views;
public DataViewAdapter(Context context, int layoutResourceId,
ArrayList<DataView> views) {
super(context, layoutResourceId, views);
this.context = context;
this.layoutResourceId = layoutResourceId;
this.views = views;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
View row = convertView;
ViewHolder holder = null;
if(row == null){
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ViewHolder();
holder.view = (View)row.findViewById(R.id.dataView);
row.setTag(holder);
} else {
holder = (ViewHolder)row.getTag();
}
DataView dataView = views.get(position);
holder.view = dataView;
return row;
}
static class ViewHolder{
public View view;
}
}
另外,如果我需要将不同的数据值传递给每个View
?在接受新数据值时,需要触发onDraw(Canvas canvas)
my 内部的方法。DataView
编辑:代码DataView
public class DataView extends View{
private LinkedList<Integer> data;
public DataView(Context context){
super(context);
data = new LinkedList<Integer>();
}
public void onDraw(Canvas canvas){
// I need to plot according to data
}
public void pushData(int value){
data.add(value);
this.invalidate();
}
}