ListView
各アイテムとして保持したいのでView
、独自に作成しArrayAdapter
ました。つまり、 myはではなく nowListView
のリストです。View
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();
}
}