Как добавить View в ViewFlipper, когда был установлен адаптер? (У указанного ребенка уже есть родитель) - PullRequest
0 голосов
/ 22 марта 2011

Я делаю GridView, чтобы динамически содержать набор интерактивных значков, поэтому мне нужно установить адаптер на GridView и добавить прослушиватель.

mGridView = (GridView) view.findViewById(R.id.listbody);<br> mGridView.setAdapter(new ListAppAdapter());<br> mGridView.setOnItemClickListener(this);

И я сам написал Адаптер:

class ListAppAdapter extends BaseAdapter {<br> ...<br> public View getView(int position, View convertView, ViewGroup parent) {...}<br> ...<br> }

Теперь мне нужно, чтобы этот GridView скользил из стороны в сторону жестом, поэтому я попытался ViewFlipper:

mFlipper = (ViewFlipper) mInflate.inflate(R.layout.main, (ViewGroup)findViewById(R.id.ViewFlipper));<br> mFlipper.addView(mGridView);<br> mDetector = new GestureDetector(this);

НО я получил исключение:

The specified child already has a parent. You must call removeView() on the child's parent first.

Затем я попытался обернуть GridView в другой FrameLayoutв XML и добавьте FrameLayout к ViewFlipper, Жест броска был захвачен, но GridView не появился, я бросал пробел FrameLayout!

Кто-нибудь знает, каксправиться с этим?

С параметрами XML и Layout все в порядке, когда я добавляю простой ImageView к ViewFlipper, он работает.

И я попытался удалить все дочерние представления ViewFlipper и не добавил тот же экземпляр GridView.Но когда я добавляю GridView, исключение все еще приходит.

1 Ответ

2 голосов
/ 22 марта 2011

Ваш GridView уже имеет родительское представление в вашем макете XML.и вы пытаетесь добавить это снова в ViewFlipper.это невозможно сделать.Таким образом, вы должны динамически создать GridView, а затем добавить его в ViewFlipper, или вы также можете накачать представление сетки из xml.это будет работать.

...