Адаптер, диалог прогресса не работает во фрагменте
У меня есть класс, который расширяет фрагмент
public class oUnit extends Fragment {
Я хочу заполнить список и добавить его в линейный макет, поэтому я использую следующий код
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ProgressDialog connectionProgressDialog = new
ProgressDialog( getActivity());
connectionProgressDialog.setCancelable(false);
connectionProgressDialog.setCanceledOnTouchOutside(false);
connectionProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
connectionProgressDialog.setMessage("Uploading Leads...");
connectionProgressDialog.show();
View view = inflater.inflate(
R.layout.chemounit,
container,
false);
//Intialize the record Grid
LinearLayout formLayout = (LinearLayout)view.findViewById(R.id.UnitGrid);
formLayout.removeAllViews();
MainGrid = new ListView(getActivity().getApplicationContext());
MainGrid.setVisibility(ListView.VISIBLE);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.RIGHT;
MainGrid.setLayoutParams(params);
//2. Call the web Service
GlobalVariables appState = (GlobalVariables) getActivity().getApplication();
Log.d(" in Chemo unit"," the array is has "+ appState.encounters.size());
MainGrid.setAdapter(new Encounteradapter(view.getContext(),R.id.ChemoUnitGrid , appState.encounters));
// Finally add it
formLayout.addView(MainGrid);
connectionProgressDialog.dismiss();
return view;
}
Я уверен, что список глобальных переменных не является нулевым и содержит данные (я использовал log.d
отображать его длину), класс Адаптер
public class Encounteradapter extends ArrayAdapter<Encounter> {
private final Context context;
TextView textViewTime ;
TextView textViewPatientName;
Button ButottonArrive ;
Button ButottonEncounter;
Button ButottonExit;
ArrayList<Encounter> Encounters ;
public Encounteradapter(Context context, int ResourceId,
ArrayList<Encounter> items)
{
super(context, ResourceId, items);
this.context = context;
this.Encounters = items ;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.chemounitgrid, parent, false);
Encounter EncounterObject = Encounters.get(position);
textViewTime = (TextView) rowView.findViewById(R.id.Time);
textViewTime.setText(EncounterObject.bookingDate);
textViewPatientName = (TextView) rowView.findViewById(R.id.Time);
textViewPatientName.setText(EncounterObject.Name);
ButottonArrive = (Button) rowView.findViewById(R.id.test1);
ButottonEncounter = (Button) rowView.findViewById(R.id.test2);
ButottonExit = (Button) rowView.findViewById(R.id.test3);
rowView.setTag(position);
return rowView;
}
}
но ничего не появляется, список не появляется, я также пытался повторно открыть раздел свойств, которые я установил, но тоже ничего
это первая проблема, вторая я пытаюсь отобразить прогресс на фрагменте OnCreate(), но не появляется, я использую следующий код
connectionProgressDialog = new ProgressDialog(getActivity());
connectionProgressDialog.setCancelable(false);
connectionProgressDialog.setCanceledOnTouchOutside(false);
connectionProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
connectionProgressDialog.setMessage("Uploading Leads...");
connectionProgressDialog.show();
Любая идея, как это исправить, я что-то пропустил с фрагментом
2 ответа
Это нормально, что у вас ничего нет на экране, потому что в onCreateView
Метод, который вы раздувать макет и настроить ListView
но тогда, когда пришло время вернуть представление (макет для этого фрагмента с ListView
куда вы кладете данные) вы делаете:
return inflater.inflate(R.layout.chemounit, container, false);
который снова раздувает файл макета с пустым ListView
(так что все настройки, которые вы сделали ранее, были бесполезны, так как вы отбрасывали первую раздутую View
). Вместо этого вы должны вернуть:
return view;
в onCreateView попробуйте это
View view=inflater.inflate(R.layout.chemounit, container, false);
ProgressDialog connectionProgressDialog = new ProgressDialog(getActivity());
connectionProgressDialog.setCancelable(false);
connectionProgressDialog.setCanceledOnTouchOutside(false);
connectionProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
connectionProgressDialog.setMessage("Uploading Leads...");
connectionProgressDialog.show();
return view;