Контекст:Как вы подключаете CustomListAdapter к фрагменту списка в Activity?
- У меня есть деятельность, состоящую из фрагмента, где есть форма для ввода даты и номера рейса. Других фрагментов нет.
- При нажатии кнопки выполняется запрос к веб-сервису.
- A
List
Объектов полета возвращается с webservice. - Пользовательский
ArrayAdapter
создан для каждой строки в спискеFragment. - Показать результаты в ListFragment в той же самой деятельности по интерфейсу.
FlightResultAdapter.java:
public class FlightResultAdapter extends ArrayAdapter<Flight>{
public FlightResultAdapter(Context context, List<Flight> flights) {
super(context, R.layout.item_flight, flights);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Flight flight = getItem(position);
if (convertView == null){
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_flight, parent, false);
}
//Set the content of the custom row layout
TextView tvFlightNum = (TextView) convertView.findViewById(R.id.tvFlightNum);
tvFlightNum.setText(flight.getNumber());
return convertView;
}
}
Примечание: ListFragment имеет расположение по умолчанию, который состоит из одного списка.Source
Так что мне не нужен файл макета для списка.
MyActivity.java: список объектов (flightList.getFlight
) используется для создания CustomListAdapter
. Этот код находится внутри функции, которая запускается на OnClick
.
FlightResultAdapter adapter =
new FlightResultAdapter(getApplicationContext(), flightList.getFlight());
FlightFragment.java
public class FlightFragment extends ListFragment {
private List<Flight> flight_items;
public FlightFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
flight_items = new ArrayList<Flight>();
//Initialise the list adapter and set
FlightResultAdapter adapter = new FlightResultAdapter(getActivity(), flight_items);
setListAdapter(adapter);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Flight flight = flight_items.get(position);
Toast.makeText(getActivity(), flight.getNumber(), Toast.LENGTH_LONG).show();
}
}
Так что я не получаю, как Покажите FlightFragment
на MyActivity
. Кроме того, как соединить его, так что отображаются результаты: Я думаю, setListAdapter
используется?
Обновление: Подключение фрагмента к деятельности 1. Добавить FrameLayout в макет деятельности или другой фрагмент макета
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
2. Используйте FragmentManager для вызова фрагмента программно:
//Create the adapter here
FlightResultAdapter adapter = new FlightResultAdapter(getApplicationContext(), flightList.getFlight());
//Get the Fragment here and set the ListAdapter
FlightFragment ff = new FlightFragment();
// In case this activity was started with special instructions from an
// Intent, pass the Intent's extras to the fragment as arguments
ff.setArguments(getIntent().getExtras());
ff.setListAdapter(adapter);
if (findViewById(R.id.fragment_container) != null) {
//Send the Data to the fragment - Need Help Here
Bundle bundle = new Bundle();
//Show the Fragment
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction =
fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fragment_container, ff);
fragmentTransaction.commit();
}
Так что метод Fragment's OnCreate
вызывается, но список пуст, потому что я не передаю объект Flight
для фрагмента , Как я могу это сделать?
Вы добавляете 'FlightFragment 'to' MyActivity'? –
@ ρяσѕρєяK Нет, я этого не делаю, это то, с чем я борюсь – surfer190
см. Следующий пост [Как добавить фрагмент в действие с программно созданным контентом] (http://stackoverflow.com/questions/5159982/how -do-i-add-a-fragment-to-the-activity-with-a-softwareatically-created-content-v), вероятно, поможет вам –