私はこのArrayAdapterをしましたアレイは
正しいですサービスが良いかどうかを知るためのログ。 問題は、アダプタ内の項目を示すログが常に0であることです。 なぜですか? どこでアダプタを更新できますか?
おかげ
EDIT:これは、モデル、ビューとプレゼンターです:
public class APIModel implements AddWithText.Model {
@Inject
Retrofit retrofit;
AddWithText.Presenter presenter;
public APIModel(AddWithText.Presenter presenter) {
this.presenter = presenter;
}
final List<String> resultList = new ArrayList<>();
void addToList(Places places){
places.getPredictions().stream().forEach(s->System.out.println(s.getDescription()));
places.getPredictions()
.stream()
.map(s->resultList.add(s.getDescription()));
}
@Override
public List<String> loadPlaces(String input) {
HappyParkApp.getInstance().createAppComponent().inject(this);
PlaceAPIService service = retrofit.create(PlaceAPIService.class);
Flowable<Places> places = service.getPlaces(Constants.APIKEY,Constants.TYPES,Constants.LANGUAGE,Constants.COMPONENTS,input);
places.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(newPlace -> addToList(newPlace));
return resultList;
}
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
{
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_add_with_text, container, false);
ButterKnife.bind(this,rootView);
HappyParkApp.getInstance().createAppComponent().inject(this);
presenter = new AddWithTextPresenter();
adapter = new PlacesAutoCompleteAdapter(getActivity(),R.layout.list_item,autoComplete,this);
DatabaseReference root = FirebaseDatabase.getInstance().getReference();
final DatabaseReference condition = root.child("condition");
insertText.setAdapter(adapter);
return rootView;
}
@Override
public void onResume() {
super.onResume();
presenter.setView(this);
}
@Override
public List<String> onAutoComplete(String character) {
List<String> result = presenter.onTextChanged(character);
return result;
}
@Override
public void refreshList(List<String> resultList) {
adapter.updateList(resultList);
}
public class AddWithTextPresenter implements AddWithText.Presenter {
AddWithText.View view;
AddWithText.Model model;
@Inject
public AddWithTextPresenter(){
model = new APIModel(this);
}
@Override
public void onComplete(List<String> resultList) {
view.refreshList(resultList);
}
@Override
public void setView(AddWithText.View view) {
this.view = view;
}
@Override
public List<String> onTextChanged(String character) {
return model.loadPlaces(character);
}
}
アダプタを設定するコードを追加してください。 – androidnoobdev
@androidnoobdev編集の質問 – nani