Не уверен, если вы все еще ищете ответ. Но я наткнулся на этот пост, столкнувшись с такой же проблемой. Плюс тот факт, что я был вынужден использовать TableLayout
(объем кода, написанного с использованием TableLayout
, огромен, и я не был вынужден переключаться на ListView
).
В итоге я удалил все представления из TableLayout
, используя:
`tableLayout.removeAllViews();`
Но это не сработает, если количество строк после удаления резко изменится. Мне также нужно было сделать недействительным свое представление, используя обработчик. Вот остальная часть моего кода.
protected static final int REFRESH = 0;
private Handler _hRedraw;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tree_view_activity);
_hRedraw=new Handler(){
@Override
public void handleMessage(Message msg)
{
switch (msg.what) {
case REFRESH:
redrawEverything();
break;
}
}
};
...
}
private void redrawEverything()
{
tableLayout.invalidate();
tableLayout.refreshDrawableState();
}
Осталась только одна часть, и это та часть, где вы отправляете сообщение вашему обработчику, чтобы обновить ваш вид. Вот код для этого:
_hRedraw.sendEmptyMessage(REFRESH);