Вид моего приложения содержит растровые изображения, линии и т. Д., Нарисованные на холсте.Я хочу отображать изображения (значки) поверх этого, которые будут реагировать на сенсорные события.Количество и расположение таких изображений будет изменяться в зависимости от данных в базе данных SQLite.
Правильно ли я считаю, что способ достижения этого состоит в том, чтобы создать группу ViewGroup, в которую я сначала добавляю базовое представление, а затемкаждый значок объекта ImageButton со слушателем OnTouch и позиционированием, определяемым путем установки полей в объекте RelativeLayout.LayoutParams?
Мой код для каждой кнопки выглядит следующим образом: `
public class MyButton {
ImageButton mButton;
private Bitmap Star;
public MyButton(int intX, int intY) {
mButton = new ImageButton(Global.thisApp);
mButton.setImageBitmap(BitmapFactory.decodeResource(Global.thisApp.getResources(), R.drawable.star)r);
mButton.setPadding(0, 0, 0, 0);
mButton.setOnTouchListener(new ImageButton.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
// ToDo
return false;
}
});
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams
(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(intX, intY, 0, 0);
Global.thisApp.mLayout.addView(mButton, params);
}
}
`и код, который создает кнопки, выглядит следующим образом:
poiCount = 0;
mCursor=Global.mDBAdapter.fetchItems(...);
if (mCursor.getCount()>=0) {
poi = new MyButton[mCursor.getCount()];
mCursor.moveToFirst();
do {
int X = ... ;
int Y = ... ;
poi[poiCount] = new MyButton("Type", X, Y);
poiCount++;
} while (mCursor.moveToNext());
}
Этот код вызывается из метода onDraw () для базового представления.
Это кажетсяработать при начальном рисовании экрана и при перерисовке экрана (с новыми данными) добавляются новые кнопки;однако предыдущие кнопки не удаляются.
Я пытался вызвать Global.ThisApp.MyLayout.removeView с каждой кнопкой поворота в качестве параметра, но Eclipse возражает, что объект MyButton не может быть параметром для removeView.
Как удалить существующие кнопки каждый раз, когда базовый вид становится недействительным?