У меня есть фрагмент Tab1Fragment, который расширяет класс Fragment (поэтому я не могу расширить ListActivity, который требуется для вызова метода setListAdapter). В этом фрагменте я хочу отобразить список, заполненный пользовательскими объектами.Настройка listadapter во фрагменте
Есть ли способ, я могу установить адаптер, не меняя расширенный класс на ListFragment? Проблема заключается в методах setListAdapter (помечены # ЗДЕСЬ).
Вот фрагмент кода:
public class Tab1Fragment extends Fragment {
private ArrayList<MobileNETDistinctChatInfo> m_parts = new ArrayList<MobileNETDistinctChatInfo>();
private Runnable viewParts;
private MobileNETDistinctChatInfoAdapter m_adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
MobileNETDBHandler db = new MobileNETDBHandler(getActivity());
// instantiate Adapter class
m_adapter = new MobileNETDistinctChatInfoAdapter(getActivity(), R.layout.chatlist_list_item, m_parts);
setListAdapter(m_adapter); # HERE
// Thread, which fetches data in the background
viewParts = new Runnable(){
public void run(){
handler.sendEmptyMessage(0);
}
};
Thread thread = new Thread(null, viewParts, "MagentoBackground");
thread.start();
return (LinearLayout) inflater.inflate(R.layout.tab1, container, false);
}
private Handler handler = new Handler()
{
public void handleMessage(Message msg)
{
m_parts.add(new MobileNETDistinctChatInfo("[email protected]","Message1", "2013-01-01 11:11:11"));
m_parts.add(new MobileNETDistinctChatInfo("[email protected]","Message2", "2013-01-01 11:11:11"));
m_parts.add(new MobileNETDistinctChatInfo("[email protected]","Message3", "2013-01-01 11:11:11"));
m_adapter = new MobileNETDistinctChatInfoAdapter(getActivity(), R.layout.chatlist_list_item, m_parts);
// display the list.
setListAdapter(m_adapter); # HERE
}
};
}
Я не могу использовать ListFragment, из-за метода в другой класс, который возвращает вкладки (они называются Tab1Fragment, Ta2Fragment, Tab3Fragment и расширить класс Fragment), который имеет тип Fragment, поэтому я не должен расширять ListFragment.
Метод:
@Override
public Fragment getItem(int position) {
Fragment fragment = new Fragment();
switch (position) {
case 0:
return fragment = new Tab1Fragment();
case 1:
return fragment = new Tab2Fragment();
case 2:
return fragment = new Tab3Fragment();
default:
break;
}
return fragment;
}
Почему вы не хотите использовать ListFragment? –
@DavidSainty: Я обновил свой вопрос. – TheAptKid
Вы не можете расширить «ListActivity», что является истинным. Но вы можете определенно расширить «ListFragment». – Ercan