从改造中获取微调器中的数据-单击项目

时间:2018-09-17 11:43:50

标签: retrofit2 android-spinner

我正在使用Android中的Retrofit从URL获取数据。响应正在成功获取数据,但是当我单击微调器中的项目时,应用程序将崩溃。

这是我的代码:

public class Home extends Fragment {

    private Button adv_search;

    int PLACE_PICKER_REQUEST = 1;
    ArrayList<String> items = new ArrayList<>();



    private View mMainView;
    private TextView category_text , view_all_featuredItems , view_all_top_categories , view_latest_provider ;
    private EditText location_text;
    private ImageView location_image_view;
    private RecyclerView latest_provider_recyclerview;
    List<LatestProvider> latestProvider;
    List<featuredListingModel> featured_items;
    private Button search_now;
    private RecyclerView mViewPager;
    private Spinner spinner1, spinner2;
    final categoryController.Infos servicecategory = categoryController.getRetrofitInstance().create(categoryController.Infos.class);
    public Home() {

    }
    @Override
    public View onCreateView(final LayoutInflater inflater, ViewGroup container,
                             final Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        mMainView = inflater.inflate(R.layout.fragment_home, container, false);

        adv_search = mMainView.findViewById(R.id.advance_search);
        adv_search.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent move_adv_search = new Intent(getActivity() , Advance_Search.class);
                startActivity(move_adv_search);
            }
        });
//        latest_provider_card = mMainView.findViewById(R.id.latest_provider);
//        latest_provider_card.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                Intent move_adv_search = new Intent(getActivity() , Search_Result.class);
//                startActivity(move_adv_search);
//            }
//        });

//        category_linear = mMainView.findViewById(R.id.ui_linear_category);
//        category_linear.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                Intent move_adv_search = new Intent(getActivity() , Category.class);
//                startActivity(move_adv_search);
//            }
//        });

        view_all_featuredItems = mMainView.findViewById(R.id.ui_view_all_featured_listing_items);
        view_all_featuredItems.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent move_view_all_featured = new Intent(getActivity()  , featured_listing.class);
                startActivity(move_view_all_featured);
            }
        });

        view_all_top_categories = mMainView.findViewById(R.id.ui_all_top_categories);
        view_all_top_categories.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent move_view_all_top_categories = new Intent(getActivity()  , Top_category.class);
                startActivity(move_view_all_top_categories);
            }
        });

        search_now = mMainView.findViewById(R.id.ui_searchNow);
        search_now.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent move = new Intent(getActivity() , Search_Result.class);
                startActivity(move);
            }
        });

        spinner1 = mMainView.findViewById(R.id.ui_category_spinner);
        spinner2 = mMainView.findViewById(R.id.ui_subcategory_spinner);

        view_latest_provider = mMainView.findViewById(R.id.ui_view_latest_provider);
        view_latest_provider.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent move_latest_provider = new Intent(getActivity() , Latest_Provider.class);
                startActivity(move_latest_provider);
            }
        });

        location_text = mMainView.findViewById(R.id.ui_get_location_text);
//        location_text.setOnPlaceSelectedListner(new PlaceSelectionListener() {
//
//            @Override
//            public void onPlaceSelected(Place place) {
//                 String placeName = place.getName().toString();
//                Toast.makeText(getActivity() , ""+placeName , Toast.LENGTH_SHORT).show();
//            }
//
//            @Override
//            public void onError(Status status) {
//
//            }
//        });

        mViewPager = mMainView.findViewById(R.id.featured_view_pager);
        StaggeredGridLayoutManager mStaggeredGridLayout = new StaggeredGridLayoutManager(1 , StaggeredGridLayoutManager.HORIZONTAL);
        mViewPager.setLayoutManager(mStaggeredGridLayout);




        location_image_view = mMainView.findViewById(R.id.ui_location_image);
        location_image_view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
                Intent intent;
                try {
                    intent = builder.build(getActivity());
                    startActivityForResult(intent , PLACE_PICKER_REQUEST);
                } catch (GooglePlayServicesRepairableException e) {
                    e.printStackTrace();
                } catch (GooglePlayServicesNotAvailableException e) {
                    e.printStackTrace();
                }

            }
        });
//        category_text = mMainView.findViewById(R.id.category_textview);
//        Bundle bundle =getActivity().getIntent().getExtras();
//        if (bundle != null){
//            category_text.setText(bundle.getString("CategoryName"));
//        }
        latest_provider_recyclerview = mMainView.findViewById(R.id.latest_provider_recyclerview);
        StaggeredGridLayoutManager mStaggeredGridLayoutManager = new StaggeredGridLayoutManager(1 , StaggeredGridLayoutManager.HORIZONTAL);
        latest_provider_recyclerview.setLayoutManager(mStaggeredGridLayoutManager);

        getLatestProvider();
        getfeaturedviewpager();
        getCategories();
        return mMainView;
    }
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data){


        if (requestCode == PLACE_PICKER_REQUEST){
            if (resultCode == getActivity().RESULT_OK){
                Place place = PlacePicker.getPlace(getActivity(),data);
                location_text.setText(place.getAddress());

            }
        }
    }

    @Nullable
    public void getCategories(){
        final ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, android.R.id.text1);
        servicecategory.getvategories().enqueue(new Callback<List<Example>>() {
            @Override
            public void onResponse(Call<List<Example>> call, final Response<List<Example>> response) {

                try{
                    final List<Example> catagories =response.body();
                   // Log.e("hii"," "+response.body());
                    for(int i=0;i<catagories.size();i++){
                        spinnerAdapter.setDropDownViewResource(R.layout.items_view);
                        spinner1.setAdapter(spinnerAdapter);
                        spinnerAdapter.add(catagories.get(i).getTitle());
                        spinnerAdapter.notifyDataSetChanged();
                    }
                    spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                        @Override
                        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                            String selectedcategory = parent.getItemAtPosition(position).toString();
                            ArrayAdapter<String> spinnerAdapter1 = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, android.R.id.text1);

                            for(int i=0;i<catagories.size();i++){

                                if(catagories.get(i).getTitle().equals(new String (selectedcategory))){
                                    spinnerAdapter1.setDropDownViewResource(R.layout.items_view);
                                    spinner2.setAdapter(spinnerAdapter1);
                                    for(int j=0;j<catagories.get(i).getSpecialities().size();j++){
                                        spinnerAdapter1.add(catagories.get(i).getSpecialities().get(j).getName());
                                    }
                                    spinnerAdapter1.notifyDataSetChanged();
                                }
                            }

                        }

                        @Override
                        public void onNothingSelected(AdapterView<?> parent) {

                        }
                    });


                }catch (Exception e){
                    Toast.makeText(getActivity() , e.getMessage() , Toast.LENGTH_LONG ).show();
                }
            }
            @Override
            public void onFailure(Call<List<Example>> call, Throwable t) {

            }
        });


    }


    private void getfeaturedviewpager(){

        Call<List<featuredListingModel>> featured_listing_call = RetrofitClient.getInstance().getApi().getFeaturedListing();
        featured_listing_call.enqueue(new Callback<List<featuredListingModel>>() {
            @Override
            public void onResponse(Call<List<featuredListingModel>> call, Response<List<featuredListingModel>> response) {
                featured_items = response.body();
                featuredListingViewPagerAdapter featuredlistingviewpageradapter;
                featuredlistingviewpageradapter = new featuredListingViewPagerAdapter(featured_items, getActivity());
                mViewPager.setAdapter(featuredlistingviewpageradapter);
            }

            @Override
            public void onFailure(Call<List<featuredListingModel>> call, Throwable t) {

            }
        });

    }



    private void getLatestProvider(){

        Call<List<LatestProvider>> Latest_ProviderCall = RetrofitClient.getInstance().getApi().getLatestProvider();
        Latest_ProviderCall.enqueue(new Callback<List<LatestProvider>>() {
            @Override
            public void onResponse(Call<List<LatestProvider>> call, Response<List<LatestProvider>> response) {



                latestProvider = response.body();
                LatestProviderAdapter latestProviderAdapter = new LatestProviderAdapter(latestProvider , getActivity());
                latest_provider_recyclerview.setAdapter(latestProviderAdapter);



            }

            @Override
            public void onFailure(Call<List<LatestProvider>> call, Throwable t) {

            }
        });


    }


}

这是logcat显示的结果:

  

09-18 11:29:57.557 2838-2838 / com.example.saadhashmi.docdirect   E / RecyclerView:未连接适配器;跳过布局09-18   11:29:57.558 2838-2838 / com.example.saadhashmi.docdirect   E / RecyclerView:未连接适配器;跳过布局09-18   11:29:57.789 2838-2838 / com.example.saadhashmi.docdirect   E / RecyclerView:未连接适配器;跳过布局09-18   11:29:57.789 2838-2838 / com.example.saadhashmi.docdirect   E / RecyclerView:未连接适配器;跳过布局09-18   11:29:58.012 2838-2838 / com.example.saadhashmi.docdirect   E / RecyclerView:未连接适配器;跳过布局09-18   11:29:58.012 2838-2838 / com.example.saadhashmi.docdirect   E / RecyclerView:未连接适配器;跳过布局09-18   11:29:58.064 2838-2917 / com.example.saadhashmi.docdirect   E / NativeCrypto:ssl = 0x7f79627680 cert_verify_callback   x509_store_ctx = 0x7f5e25faf0 arg = 0x0 09-18 11:29:58.066   2838-2917 / com.example.saadhashmi.docdirect E / NativeCrypto:   ssl = 0x7f79627680 cert_verify_callback调用verifyCertificateChain   authMethod = ECDHE_RSA 09-18 11:29:58.081   2838-2915 / com.example.saadhashmi.docdirect E / NativeCrypto:   ssl = 0x7f748b8800 cert_verify_callback x509_store_ctx = 0x7f5e364af0   arg = 0x0 09-18 11:29:58.082 2838-2915 / com.example.saadhashmi.docdirect   E / NativeCrypto:ssl = 0x7f748b8800 cert_verify_callback调用   verifyCertificateChain authMethod = ECDHE_RSA 09-18 11:29:58.082   2838-2914 / com.example.saadhashmi.docdirect E / NativeCrypto:   ssl = 0x7f79626c80 cert_verify_callback x509_store_ctx = 0x7f5e469af0   arg = 0x0 09-18 11:29:58.083 2838-2914 / com.example.saadhashmi.docdirect   E / NativeCrypto:ssl = 0x7f79626c80 cert_verify_callback调用   verifyCertificateChain authMethod = ECDHE_RSA 09-18 11:30:03.635   2838-2838 / com.example.saadhashmi.docdirect E / Android运行时:致命   例外:主要                                                                                   流程:com.example.saadhashmi.docdirect,PID:2838                                                                                   java.lang.NullPointerException:尝试调用虚拟方法'void   android.widget.TextView.setText(java.lang.CharSequence)'上的null   对象参考                                                                                       在   android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:399)                                                                                       在android.widget.ArrayAdapter.getDropDownView(ArrayAdapter.java:448)                                                                                       在   android.widget.Spinner $ DropDownAdapter.getDropDownView(Spinner.java:971)                                                                                       在android.widget.Spinner $ DropDownAdapter.getView(Spinner.java:967)                                                                                       在android.widget.Spinner.measureContentWidth(Spinner.java:841)                                                                                       在   android.widget.Spinner $ DropdownPopup.computeContentWidth(Spinner.java:1230)                                                                                       在android.widget.Spinner $ DropdownPopup.show(Spinner.java:1262)                                                                                       在android.widget.Spinner.performClick(Spinner.java:766)                                                                                       在   android.support.v7.widget.AppCompatSpinner.performClick(AppCompatSpinner.java:448)                                                                                       在android.view.View $ PerformClick.run(View.java:21539)                                                                                       在android.os.Handler.handleCallback(Handler.java:819)                                                                                       在android.os.Handler.dispatchMessage(Handler.java:104)                                                                                       在android.os.Looper.loop(Looper.java:210)                                                                                       在android.app.ActivityThread.main(ActivityThread.java:5982)                                                                                       在java.lang.reflect.Method.invoke(本机方法)                                                                                       在   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:852)                                                                                       在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:742)

0 个答案:

没有答案