2015-12-09 2 views
1

Я ищу образец программы, который мог бы динамически заполнять Spinner элемент с сервера с помощью Retrofit 1.9, но все же я не мог найти ни одного образца, который может поделиться с кем-нибудь, если есть образец, касающийся этого требования, или же поделиться этим методом. Как это должно быть сделано, поскольку я новичок в битве Android, пытаясь найти решение заблаговременно!Заполняющие спиннины с использованием модификации 1.9?

Вот мой spinneritem класс:

public class MySpinnerItem { 

    public MySpinnerItem(){ 

    } 
    public MySpinnerItem(String text, Integer value) { 
     Text = text; 
     Value = value; 
    } 

    public String getText() { 
     return Text; 
    } 

    public void setText(String text) { 
     Text = text; 
    } 

    public Integer getValue() { 
     return Value; 
    } 

    public void setValue(Integer value) { 
     Value = value; 
    } 

    public String Text; 
    public Integer Value; 

} 

Вот мой кок адаптер:

package first.service.precision.servicefirst; 

import android.content.Context; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 

import java.util.List; 

/** 
* Created by 4264 on 25-11-2015. 
*/ 
public class MySpinnerAdapter extends ArrayAdapter<MySpinnerItem> { 

    private Context context; 
    private List<MySpinnerItem> objects; 
    public MySpinnerAdapter(Context context, int resource, List<MySpinnerItem> objects) { 
     super(context, resource, objects); 
     this.context = context; 
     this.objects = objects; 
    } 

    @Override 
    public void add(MySpinnerItem object) { 
     this.objects.add(object); 
    } 


    @Override 
    public int getCount() { 
     return objects.size(); 
    } 

    @Override 
    public MySpinnerItem getItem(int position) { 
     return objects.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     TextView label = new TextView(context); 
     label.setText(objects.get(position).getText()); 
     return label; 
    } 

    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     TextView label = new TextView(context); 
     label.setText(objects.get(position).getText()); 
     return label; 
    } 
} 

Вот фрагмент, где я установить адаптер для блесен:

package first.service.precision.servicefirst; 

/** 
* Created by 4264 on 23-11-2015. 
*/ 

import android.app.Fragment; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Spinner; 

import com.squareup.otto.Bus; 

import java.util.ArrayList; 
import java.util.List; 

public class NewRequirements extends Fragment { 
    Bus bus; 
    MyListAdapter listAdapter; 

    @Override 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     List<MySpinnerItem> SbuList = new ArrayList<MySpinnerItem>(); 
     SbuList.add(new MySpinnerItem("Saravanan.R",1)); 
     SbuList.add(new MySpinnerItem("Yogeshwaran",2)); 
     SbuList.add(new MySpinnerItem("Sathesh",3)); 
     SbuList.add(new MySpinnerItem("Barath",4)); 
     SbuList.add(new MySpinnerItem("Deepak",5)); 
     SbuList.add(new MySpinnerItem("Venkat",6)); 
     SbuList.add(new MySpinnerItem("Meena",7)); 
     SbuList.add(new MySpinnerItem("Ram",8)); 
     SbuList.add(new MySpinnerItem("Jegan",9)); 

     View view = inflater.inflate(R.layout.fragment_dialog_claim, container, 
       false); 
     final Button btnupdate; 
     btnupdate = (Button) view.findViewById(R.id.btnAdd); 

     final Spinner spSbuID = (Spinner) view.findViewById(R.id.spSbuID); 
     final Spinner spBuID = (Spinner) view.findViewById(R.id.spBuID); 
     final Spinner spSubBuID = (Spinner) view.findViewById(R.id.spSubBuID); 
     final Spinner spServiceCategoryID = (Spinner) view.findViewById(R.id.spServiceCategoryID); 
     final Spinner spServiceSubCategoryID = (Spinner) view.findViewById(R.id.spServiceSubCategoryID); 
     final EditText txtRequirements=(EditText)view.findViewById(R.id.txtRequirements); 

     MySpinnerAdapter myadapter = new MySpinnerAdapter(getActivity().getBaseContext(),android.R.layout.simple_spinner_dropdown_item,SbuList); 
     spSbuID.setAdapter(myadapter); 

     myadapter = new MySpinnerAdapter(getActivity().getBaseContext(),android.R.layout.simple_spinner_dropdown_item,SbuList); 
     spBuID.setAdapter(myadapter); 

     myadapter = new MySpinnerAdapter(getActivity().getBaseContext(),android.R.layout.simple_spinner_dropdown_item,SbuList); 
     spSubBuID.setAdapter(myadapter); 

     myadapter = new MySpinnerAdapter(getActivity().getBaseContext(),android.R.layout.simple_spinner_dropdown_item,SbuList); 
     spServiceCategoryID.setAdapter(myadapter); 

     myadapter = new MySpinnerAdapter(getActivity().getBaseContext(),android.R.layout.simple_spinner_dropdown_item,SbuList); 
     spServiceSubCategoryID.setAdapter(myadapter); 




     try{ 
      Object o; 
      o = getFragmentManager().findFragmentByTag("add"); 
      Log.v("FIND", o.toString()); 
     } 
     catch (Exception ex) { 
      Log.v("FIND", ex.toString()); 
     } 

    // add.notify(); 

     btnupdate.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       LeadRequirementsView objLeadRequirementsView = new LeadRequirementsView(); 
       MySpinnerItem item; 

       item = (MySpinnerItem)spSbuID.getSelectedItem(); 
       objLeadRequirementsView.setSbuID(item.getValue()); 
       objLeadRequirementsView.setSbuName(item.getText()); 

       item = (MySpinnerItem)spBuID.getSelectedItem(); 
       objLeadRequirementsView.setBuID(item.getValue()); 
       objLeadRequirementsView.setBuName(item.getText()); 

       item = (MySpinnerItem)spSubBuID.getSelectedItem(); 
       objLeadRequirementsView.setSubBuID(item.getValue()); 
       objLeadRequirementsView.setSubBuName(item.getText()); 

       item = (MySpinnerItem)spServiceCategoryID.getSelectedItem(); 
       objLeadRequirementsView.setServiceCategoryID(item.getValue()); 
       objLeadRequirementsView.setServiceCategoryName(item.getText()); 

       item = (MySpinnerItem)spServiceSubCategoryID.getSelectedItem(); 
       objLeadRequirementsView.setServiceSubCategoryID(item.getValue()); 
       objLeadRequirementsView.setServiceSubCategoryName(item.getText()); 

       objLeadRequirementsView.setDescription(txtRequirements.getText().toString()); 

       Add add; 

       add = (Add)getFragmentManager().findFragmentByTag("add"); 
       add.updateListView(objLeadRequirementsView); 
       getActivity().getFragmentManager().popBackStack(); 
      } 

     }); 
     return view; 
    } 



} 

Мои сомнения Я сделал это с использованием фиктивных данных, но мне нужно привязать ответ json от сервера к моему счетчику, o это.

+0

На первом Google для использования Дооснащения в вашем приложении, как мы могли бы получить данные с сервера, то мы можем установить это в Спиннере. Итак, могу ли я узнать, какую часть вы не можете понять? –

+0

от вчера только я начал использовать модифицированную успешно реализованную логин-ответ от сервера Теперь я просто хочу, чтобы я знал, что могу получать данные с помощью pojo, но я не знаю, как установить его в spinner –

+0

Вы можете получать данные в Pojo, правильно? –

ответ

1

Ниже приведен пример для установки кок

Spinner spinner = (Spinner) findViewById(R.id.spinner1); 
ArrayAdapter<String> adapter; 
List<String> data; 

data = new ArrayList<>(); 
for (int i = 0; i < 20; i++) 
     data.add("Data " + (i + 1)); 

adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data); 
spinner.setAdapter(adapter); 

Здесь данные является фиктивные данные, в вашем случае это будет фиктивные данные.

+0

ki «Попробуйте и дайте знать, и еще одно сомнение, почему нам нужен пользовательский конвертер, поскольку у нас есть преобразователи по умолчанию в модификации –

+0

@ M.Yogeshwaran Можете ли вы привести пример конвертера, потому что я никогда не использовал преобразователи. –

+0

как jsontostring конвертер, который я видел в некоторых примерах программ, и еще одно сомнение, я полагаю, что u может быть опытным разработчиком Android, он надежен использовать сетевую библиотеку, например, модифицировать –

0

сначала создать theretrofitapi интерфейс

/** 
* reCreated by goodlife on 1/11/2016. 
*/ 
import java.util.List; 


import retrofit.Callback; 
import retrofit.client.Response; 
import retrofit.http.Field; 
import retrofit.http.FormUrlEncoded; 
import retrofit.http.GET; 
import retrofit.http.POST; 

/** 
* Created by Belal on 11/5/2015. 
*/ 
public interface RetrofitInternetApi { 

    //@FormUrlEncoded, we have to write this if we want to send post data to the server. 
    //@POST, because we are using an HTTP Post request we have written this. 
    // Inside it we have the URL of the script that will be receiving the post request. 
    // Note that the URL is excluding the root URL. And we have defined the root URL in our MainActivity. 
    //@Field(“key”) String variable inside key we have to write what we have written inside $_POST[‘key’] in our script. 
    // And we have to specify it for all the values we are going to send. 

    //Callback<Response> callback it is also inside the retrofit library. It will receive the output from the server. 

    //But this is only an interface and the method is abstract. 
    //We will define the method inside fetchDepartmentName() method that is declared inside MainActivity.java. 

    @GET("/getDepartmentName.php") 
    public void getDepartmentName(Callback<List<DepartmentNoRealm>> response); 

} 

затем создать функцию

private void fetchDepartmentName(){ 
//Creating a rest adapter 
     RestAdapter restAdapter = new RestAdapter.Builder() 
       .setEndpoint(ROOT_URL) 
       .build(); 

     //Creating an object of our api interface 
     RetrofitInternetApi retrofitInternetApi = restAdapter.create(RetrofitInternetApi.class); 
      //While the app fetched data we are displaying a progress dialog 
      final ProgressDialog loading = ProgressDialog.show(getActivity(), "Fetching Data", "Please wait...", false, false); 



      //Defining the method 
      retrofitInternetApi.getDepartmentName(new Callback<List<DepartmentNoRealm>>() { 
       @Override 
       public void success(List<DepartmentNoRealm> list, Response response) { 
        //Dismissing the loading progressbar 
        loading.dismiss(); 
        Log.d("JSON LIST",list.toString()); 
        //Storing the data in our list 
        departmentNoRealmList = list; 

        //Calling a method to show the list 
         showListinSpinner();   } 

       @Override 
       public void failure(RetrofitError error) { 
        //you can handle the errors here 
       } 
      }); 
     } 

затем создать класс модели

package myafya.safaricom.co.ke.myafya.model.realm; 

/** 
* Created by 001557 on 1/13/2016. 
*/ 
public class DepartmentNoRealm { 
    public int departmentID; 
    public String departmentName; 
    public String departmentURLimage; 

    public int getDepartmentID() { 
     return departmentID; 
    } 

    public void setDepartmentID(int departmentID) { 
     this.departmentID = departmentID; 
    } 

    public String getDepartmentName() { 
     return departmentName; 
    } 

    public void setDepartmentName(String departmentName) { 
     this.departmentName = departmentName; 
    } 

    public String getDepartmentURLimage() { 
     return departmentURLimage; 
    } 

    public void setDepartmentURLimage(String departmentURLimage) { 
     this.departmentURLimage = departmentURLimage; 
    } 
} 

теперь код showList в Spinner

//Our method to show list 
    private void showListinSpinner(){ 
     //String array to store all the book names 
     String[] items = new String[departmentNoRealmList.size()]; 

     //Traversing through the whole list to get all the names 
     for(int i=0; i<departmentNoRealmList.size(); i++){ 
      //Storing names to string array 
      items[i] = departmentNoRealmList.get(i).getDepartmentName(); 
     } 

     //Spinner spinner = (Spinner) findViewById(R.id.spinner1); 
     ArrayAdapter<String> adapter; 
     adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, items); 
     //setting adapter to spinner 
     spinnerDepartments.setAdapter(adapter); 
     //Creating an array adapter for list view 

    } 

Затем поделиться им и сделать ЛЕГКО

MY JSON БЫЛА

[ 
    { 
    "departmentID": "1", 
    "departmentName": "Enterprise Business Unit (EBU)", 
    "departmentURLimage": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSKOZmGNAA08NbHwRJrloAouWqs6r4x7BGXY4k-ULWiHuPEobHI" 
    }, 
    { 
    "departmentID": "2", 
    "departmentName": "Consumer Business Unit (CBU)", 
    "departmentURLimage": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQ0IAFhZ52KiG_0ck5VbBxweZWf_MEA9eRmgHAEr6CG-rUG_a2QEQ" 
    } 
] 
0
 try { 
      Retrofit retrofit = new Retrofit.Builder() 
        .baseUrl(Constants.BASE_URL) 
        .addConverterFactory(GsonConverterFactory.create()) 
        .build(); 
      APIService service = retrofit.create(APIService.class); 
      Call<List<People>> call = service.getYear(user_id); 
      call.enqueue(new Callback<List<People>>() 
      { 
       @Override 
       public void onResponse(Response<List<People>> response, Retrofit retrofit) { 
        posts = response.body(); 
      String[] s =new String[posts.size()]; 
        for(int i=0;i<posts.size();i++) 
        { 
         s[i]= posts.get(i).getYear(); 
         final ArrayAdapter a = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, s); 
         a.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
         //Setting the ArrayAdapter data on the Spinner 
         Branch.setAdapter(a); 
        }      
       } 
       @Override 
       public void onFailure(Throwable t) { } 
      }); 
     } catch (Exception e) { 
      Log.d("onResponse", "There is an error"); 
       } 

} 
+0

добавить некоторые пояснения – Gahan

Смежные вопросы