Я хочу отобразить listview в windowmanager.android добавить ListView в windowmanager, не удается удалить последний элемент
Добавить listview в windowmanager. У меня есть оверлей на экране, тогда, когда вы добавляете, редактируете, удаляете элемент, я буду работать только с адаптером и notifydatasetchanged().
Но я получаю проблему, когда удаляю последний элемент, я видел журнал, который удаляет успех, но ЭТОТ ДЕТАЛЬ ВСЕ ЕЩЕ РАЗНОЕ В DESKTOP, хотя я удаляю Listview из windowmanager, я не знаю, почему это так?
вот мой код:
Добавить ListView:
private void addNotificationView(final Context context) {
if (windowManager == null)
windowManager = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
// NotificationView[messageNumber] =
// LayoutInflater.from(context).inflate(
// R.layout.fr_alert, null);
lv = new ListView(context);
if (messageNumber == 0) {
lv.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT));
lv.requestLayout();
lv.setBackgroundColor(Color.BLACK);
data.add(messageNumber + " <(^OO^)>");
adapter = new NotifyView(context, data);
lv.setAdapter(adapter);
} else {
data.add(messageNumber + " <(^OO^)>");
adapter.notifyDataSetChanged();
}
params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSPARENT);
params.gravity = Gravity.TOP;
// | Gravity.FILL_HORIZONTAL;
params.x = 0;
params.y = 0;
// Logger.error("y asix: " + (messageNumber * notifyHeight));
//
((WindowManager) context.getSystemService(Context.WINDOW_SERVICE))
.addView(lv, params);
messageNumber++;
Logger.error("Added View");
}
адаптер:
@Override
public android.view.View getView(final int pos,
android.view.View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if (convertView == null)
convertView = LayoutInflater.from(mContext).inflate(
R.layout.fr_alert, parent, false);
LinearLayout lnl = (LinearLayout) convertView
.findViewById(R.id.bgTextContent);
lnl.setBackgroundColor(Color.parseColor("#000000"));
lnl.setAlpha((float) 0.9);
TextView tv = (TextView) convertView.findViewById(R.id.tvContent);
tv.setText("<(^OO^)> " + data.get(pos));
tv.setTextColor(Color.WHITE);
TextView tvDelete = (TextView) convertView
.findViewById(R.id.tvDelete);
tvDelete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if (adapter.getCount() != 1) {
data.remove(pos);
adapter.notifyDataSetChanged();
} else {
// adapter = null;
messageNumber = 0;
destroynotification(mContext);
}
}
});
return convertView;
}
Тогда, когда размер адаптера = 0. Я удалить ListView, но это не woring тоже: (
private void destroynotification(Context context) {
if (lv != null) {
((WindowManager) context.getSystemService(Context.WINDOW_SERVICE))
.removeView(lv);
Logger.error("Removed View, mess number = " + messageNumber);
}
}
Пожалуйста, посмотрите изображение, я нажал, чтобы удалить последний элемент, в журнале отображается метод destroyNotication(). . Но этот пункт еще показать здесь :(
, когда вы добавляете listview в windowmanager? –
когда первый раз (count = 0) Я создаю listview и добавляю в windowmanager. после того, как я только добавлю данные в адаптер и вызову метод Notifydatasetchanged(). См. Мой код обновления. – kemdo