У меня есть собственный адаптер, производный от ArrayAdapter
, который переопределяет getView()
, который мы назовем CustomObjectAdapter
. Я вручную добавляю View
s, созданные адаптером, в LinearLayout, как показано ниже:
m_adapter = new CustomObjectAdapter(this.getApplicationContext(),
R.layout.custom_object_layout,
m_customObjectArrayList);
m_linearLayout = (LinearLayout)findViewById(R.id.custom_object_list_linear_layout);
for (int i = 0; i < m_adapter.getCount(); i++) {
// Create the view for the custom object
View view = m_adapter.getView(i, null, null);
m_linearLayout.addView(view);
}
Я заполняю LinearLayout
View
s вместо использования ListView
, потому что он содержится в Fragment
, в котором я хочу, чтобы вся область прокручивалась, а не только область внутри ListView
. Я нашел это решение в этом вопросе StackOverflow: Использование ListAdapter для заполнения LinearLayout внутри макета ScrollView.
В том же классе, в котором заполняются эти View
, данные, используемые в методе адаптера getView()
, обновляются, а затем я вызываю m_adapter.notifyDataSetChanged()
. Однако функция getView()
впоследствии не вызывается. В другой области кода я обновляю адаптер, который подключен к ListView
таким же образом (вместо LinearLayout
), и он обновляется соответствующим образом. Кто-нибудь знает, что я делаю неправильно?
addHeaderView
иaddFooterView
вListView
< /a> в будущем, когда вы хотите, чтобы элементы, не входящие в список, также можно было прокручивать. - person blahdiblah   schedule 15.11.2013addHeaderView
сразу после публикации этого вопроса, и теперь он отлично работает! Если вы добавите комментарий выше к своему ответу, я приму его как решение. - person jokeefe   schedule 15.11.2013