Читаю книгу Брайн Харди, Билл Филлипс "Программирование под Android" и выполняю задания после каждой главы и вот застрял на одном задании. Упражнение. Пустое представление для списка!Если фрагмент который отображает список событий, но при первом запуске он пустой и мне нужно назначить ему пустое представление пока нету событий в списке. В книге написано использовать public void setEmptyView(View emptyView), но как его юзать с фрагментами я не знаю(НАЧИНАЮ только писать под андроид, да и большого опыта работы с java нету). Подскажите решение или дайте ссылку где посмотреть пример! Вот сам код фрагмента: Код | package com.bignerdranch.android.criminalintent;
import java.util.ArrayList;
import android.annotation.TargetApi; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.ListView; import android.widget.TextView;
public class CrimeListFragment extends ListFragment {
// private static final String LOG_TAG = "CrimeListFragment";
private ArrayList<Crime> mCrimes;
@Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setHasOptionsMenu(true);
getActivity().setTitle(R.string.crime_title);
mCrimes = CrimeLab.getCrimeLab(getActivity()).getCrimes();
CrimeAdapter adapter = new CrimeAdapter(mCrimes); setListAdapter(adapter); }
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub Тут как я понимаю нужно реализовать представление если список пустой. Но как это сделать не могу понять. return super.onCreateView(inflater, container, savedInstanceState); }
@Override public void onListItemClick(ListView list, View v, int position, long id) { // TODO Auto-generated method stub Crime crime = ((CrimeAdapter) (getListAdapter())).getItem(position); // Log.d(LOG_TAG, crime.getTitle()+" was clicked");
// Запуск CrimeActivity Intent intent = new Intent(getActivity(), CrimePagerActivity.class); intent.putExtra(CrimeFragment.EXTRA_CRIME_ID, crime.getId()); startActivity(intent); }
private class CrimeAdapter extends ArrayAdapter<Crime> {
public CrimeAdapter(ArrayList<Crime> crimes) { super(getActivity(), 0, crimes); }
@Override public View getView(int position, View convertView, ViewGroup parent) {
// Если мы не получили представление, заполняем его if (convertView == null) { convertView = getActivity().getLayoutInflater().inflate( R.layout.list_item_crime, null); }
// Настройка представления Crime crime = getItem(position);
TextView titleTextView = (TextView) convertView .findViewById(R.id.crime_list_item_titleTextView); titleTextView.setText(crime.getTitle()); TextView dateTextView = (TextView) convertView .findViewById(R.id.crime_list_item_dateTextView); dateTextView.setText(crime.getDate().toString()); CheckBox solvedCheckBox = (CheckBox) convertView .findViewById(R.id.crime_list_item_solvedCheckBox); solvedCheckBox.setChecked(crime.isSolved());
return convertView; } }
@Override public void onResume() { // TODO Auto-generated method stub super.onResume(); // Перезагрузка списка после возврата к ентому списку т.е. сохранение // изменений ((CrimeAdapter) getListAdapter()).notifyDataSetChanged(); }
@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { // TODO Auto-generated method stub super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.fragment_crime_list, menu); } @TargetApi(11) @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_item_new_crime: Crime crime = new Crime(); CrimeLab.getCrimeLab(getActivity()).addCrime(crime); Intent intent = new Intent(getActivity(), CrimePagerActivity.class); intent.putExtra(CrimeFragment.EXTRA_CRIME_ID, crime.getId()); startActivityForResult(intent, 0); return true; case R.id.menu_item_show_subtitle: getActivity().getActionBar().setSubtitle(R.string.subtitle); return true; default: return super.onOptionsItemSelected(item); } } }
|
Помогите плиз начинающему
|