14

У меня есть два выпрямления с помощью андроида в двух разных действиях. Но оба счетчика имеют одинаковые данные из одного и того же sourec.I хочу изменить положение второго Деятельность по позиции первой деятельности. Как решить эту проблему?.Как изменить положение счетчика в соответствии с положением другого счетчика в двух разных действиях

Обновленный код:

Первая активность:

public class ServiceRequest extends BaseActivity implements OnItemClickListener { 
    private List<Item> customerList = new ArrayList<Item>(); 
    private SpinnerAdapter adapter; 
    public static final String EXTRA_INTENT_CUSTOMER_LIST ="extra_intent_customer_list"; 

    public static final String EXTRA_INTENT_SELECTED_ITEM = "extra_intent_selected_item"; 
    private List<Item> items; 
    Spinner spin; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getLayoutInflater().inflate(R.layout.service_request, frameLayout); 

     ; 


    ); 
        System.out.println("Selected item " Button login = (Button) findViewById(R.id.booking); 

     final String message = autoCompView.getText().toString(); 
     //Create the bundle 


     login.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View v) { 
{ 

        if(customerList.isEmpty()) return; 
        Item selectedItem = (Item) spin.getSelectedItem(); 
        spin.getSelectedItem().toString(+selectedItem); 

       Intent intent = new Intent(ServiceRequest.this, Form.class); 
//   intent.putExtra(EXTRA_INTENT_CUSTOMER_LIST, (Serializable) customerList); 
        intent.putExtra("seletedItem", selectedItem); 
        intent.putExtra(EXTRA_INTENT_SELECTED_ITEM, selectedItem); 
        startActivity(intent); 
       } 
      } 

     }); 

     spin = (Spinner) findViewById(R.id.service_spinner); 
     adapter = new SpinnerAdapter((ArrayList<Item>) customerList, this); 
     spin.setAdapter(adapter); 
    } 


    public void onStart(){ 
     super.onStart(); 
     BackTask bt=new BackTask(); 
     bt.execute(); 
    } 
    private class BackTask extends AsyncTask<Void,Void,ArrayList<Item>> { 
     ArrayList<String> list; 
     protected void onPreExecute(){ 
      super.onPreExecute(); 
      list=new ArrayList<>(); 
     } 
     protected ArrayList<Item> doInBackground(Void... params) { 
      InputStream is = null; 
      String result = ""; 
      try { 
       HttpClient httpclient = new DefaultHttpClient(); 
       HttpPost httppost = new HttpPost("http://my_url/Service.asmx/GetServiceList"); 
       HttpResponse response = httpclient.execute(httppost); 
       HttpEntity entity = response.getEntity(); 
       // Get our response as a String. 
       is = entity.getContent(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

      //convert response to string 
      try { 
       BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8")); 
       String line = null; 
       while ((line = reader.readLine()) != null) { 
        result += line; 
       } 
       is.close(); 
       //result=sb.toString(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      // parse json data 
      try { 
       JSONArray jArray = new JSONArray(result); 
       for (int i = 0; i < jArray.length(); i++) { 
        JSONObject obj = jArray.getJSONObject(i); 
        Item customer = new Item(); 
        customer.setId(obj.getString("ServiceId")); 
        customer.setName(obj.getString("ServiceName")); 

        // adding movie to movies array 
        customerList.add(customer); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
//   adapter.notifyDataSetChanged(); 
      return null; 
     } 
     @Override 
     protected void onPostExecute(ArrayList<Item> customerList) { 
      if(customerList != null && !customerList.isEmpty()){ 
       adapter.updateDate(customerList); 
      } 
     } 

    }} 

Код второй активности

 public class Form extends BaseActivity { 

    // ArrayList<String> listItems = new ArrayList<>(); 
// ArrayAdapter<String> adapter; 
    private ArrayList<Item> customerList = new ArrayList<Item>(); 
    private SpinnerAdapter adapter; 
    private List<Item> items; 

    AdapterView.OnItemSelectedListener listener; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getLayoutInflater().inflate(R.layout.activity_form, frameLayout); 

     if(getIntent().hasExtra(ServiceRequest.EXTRA_INTENT_SELECTED_ITEM)){ 
      selectedItem = (Item)getIntent().getSerializableExtra(ServiceRequest.EXTRA_INTENT_SELECTED_ITEM); 
     } 


     service_need = (Spinner) findViewById(R.id.service_need); 
     adapter = new SpinnerAdapter(customerList, this); 
     service_need.setAdapter(adapter); 
     /* Commented by me 
     if(selectedItem != null){ 
      service_need.setSelection(customerList.indexOf(selectedItem)); 
     }*/ 




     /* 
     Commented for testing :Praveen 
     Bundle bundle = getIntent().getExtras(); 
     String stuff1 = bundle.getString("local");*/ 
     autoCompView.setText("stuff1"); 
//  position = customerList.indexOf(bundle.getString("name")); 
//  spin.setSelection(position); 
//  adapter.notifyDataSetChanged(); 
//  adapter.notifyDataSetChanged(); 

//  String name = bundle.getString("name"); 
//  adapter.add(name); 


    } 

    public void onStart() { 
     super.onStart(); 
     BackTask bt = new BackTask(); 
     bt.execute(); 
    } 

    private class BackTask extends AsyncTask<Void, Void, ArrayList<Item>> { 
     ArrayList<String> list; 

     protected void onPreExecute() { 
      super.onPreExecute(); 
//   list = new ArrayList<>(); 

     } 

     protected ArrayList<Item> doInBackground(Void... params) { 
      InputStream is = null; 
      String result = ""; 
      try { 
       HttpClient httpclient = new DefaultHttpClient(); 
       HttpPost httppost = new HttpPost("http://my_url/Service.asmx/GetServiceList"); 
       HttpResponse response = httpclient.execute(httppost); 
       HttpEntity entity = response.getEntity(); 
       // Get our response as a String. 
       is = entity.getContent(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

      //convert response to string 
      try { 
       BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8")); 
       String line = null; 
       while ((line = reader.readLine()) != null) { 
        result += line; 
       } 
       is.close(); 
       //result=sb.toString(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      // parse json data 
      try { 
       JSONArray jArray = new JSONArray(result); 
       for (int i = 0; i < jArray.length(); i++) { 
        JSONObject obj = jArray.getJSONObject(i); 
        Item customer = new Item(); 
        customer.setId(obj.getString("ServiceId")); 
        customer.setName(obj.getString("ServiceName")); 
        customerList.add(customer); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
//   adapter.notifyDataSetChanged(); 
      return null; 
     } 

     @Override 
     protected void onPostExecute(ArrayList<Item> customerList) { 
      if(customerList != null && !customerList.isEmpty()){ 
       adapter.updateDate(customerList); 
       if(selectedItem != null){ 
        spin.setSelection(customerList.indexOf(selectedItem)); 
       } 
      } 
     } 
    } 


} 

Модель класса

public class Item implements Serializable { 
    String id; 
    String name; 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    @Override 
    public boolean equals(Object o) { 
     if (this == o) return true; 
     if (o == null || getClass() != o.getClass()) return false; 

     Item item = (Item) o; 

     if (getId() != item.getId()) return false; 
     return getName().equals(item.getName()); 

    } 
} 

класс Adapeter

public class SpinnerAdapter extends BaseAdapter { 

    ArrayList<Item> categories = new ArrayList<>(); 
    Context mContext; 

    public SpinnerAdapter(ArrayList<Item> categories, Context context){ 
     this.categories = categories; 
     mContext = context; 
    } 

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

    @Override 
    public Object getItem(int i) { 
     return categories.get(i); 
    } 

    @Override 
    public long getItemId(int i) { 
     return categories.get(i).hashCode(); 
    } 

    @Override 
    public View getView(int i, View view, ViewGroup viewGroup) { 

     Item item = categories.get(i); 
     ViewHolder holder = null; 
     if(view == null){ 
      view = LayoutInflater.from(mContext).inflate(R.layout.spin_row, null); 
      holder = new ViewHolder(); 
      holder.name = (TextView) view.findViewById(R.id.name); 
      view.setTag(holder); 
     } else { 
      holder = (ViewHolder) view.getTag(); 
     } 
     holder.name.setText(item.getName()); 
     return view; 
    } 

    static class ViewHolder{ 
     TextView name; 
    } 

} 

JSON ответ

[{"ServiceId":"1","ServiceName":"AC"}, 
{"ServiceId":"5","ServiceName":"Plumbing"}, 
{"ServiceId":"3","ServiceName":"Refrigerator"}, 
{"ServiceId":"7","ServiceName":"Appliances"}, 
{"ServiceId":"27","ServiceName":"Others"}] 
+1

Самый важный вопрос: правильно ли вы получаете данные о своих намерениях во 2-й деятельности? это 'позиция', которую вы хотите. – TWL

ответ

0

Try, чтобы получить положение выбранного имени в первой деятельности, получая его через List во второй деятельности.

position = customerList.indexOf(bundle.getString("name")); 
spin.setSelection(position,false); 
+0

Не работает .. Можете ли вы PLZ дать полное предложение ... – Adi

+0

Как вы заполняете список во втором мероприятии? –

+0

Он заселен прямо с сервера ... как первая деятельность – Adi

0

Использование setSelection(position) вместо setSelection(position, false)

+0

Не работает ........ – Adi

1

Это должно быть в ServiceRequest деятельности Intent:

Intent intent = new Intent(ServiceRequest.this, Form.class); 

Bundle extras = new Bundle(); 
extras.putString("local", autoCompView.getText().toString()); 
extras.putInt("position", spin.getSelectedItemPosition()); 
intent.putExtras(extras); 

startActivity(intent); 

И это должно быть, как вы установите Spinner в onCreate() методе ваш Form деятельность:

spin = (Spinner) findViewById(R.id.spinner); 
adapter = new SpinAdapter(this, customerList); 
spin.setAdapter(adapter); 

Bundle extras = getIntent().getExtras(); 
spin.setSelection(extras.getInt("position")); 
+0

Метод SetPosition имеет ошибку (не может разрешить метод) – Adi

+0

@Adi Моя ошибка, метод 'setSelection()' , а не 'setPosition()'. Обновлен код. – Bryan

+0

это тоже не работает..Больщик запустил ответ сервера, не имеет значения намерения. – Adi

5

Вы можете решить эту проблему, используя 2 темы.

  1. SharePrefernce

  2. Намерение

SharePrefernce

магазин положение массива Spinner.

Получите позицию и установите ее на счетчик при повторном использовании.

Пример: -

для сохранения или запоминания позиции в SharePrefernce.

int position = spin.getSelectedItemPosition() ; 
PreferenceManager.getDefaultSharedPreferences(this).edit().putInt("position",position).commit(); 

Для получения или установки значения с SharePrefernce на Spinner.

int position = PreferenceManager.getDefaultSharedPreferences(this).getInt("position", 0); 
spin.setSelection(position); 

Намерение

магазин положение массива Spinner в намерениях.

Получите позицию и установите ее на счетчик, когда вы снова используете намерение.

Пример: -

для сохранения или запоминания позиции в Намерение.

int position = spin.getSelectedItemPosition() ; 
Intent myIntent = new Intent(A.this, B.class); 
myIntent.putExtra("position", position); 
startActivity(myIntent); 

Для получения или установки значения от намерения до счетчика.

Intent mIntent = getIntent(); 
int position = mIntent.getIntExtra("position", 0); 
spin.setSelection(position); 

Это оба работают. Я уже проверил его.

+0

Исключено исключение с нулевой точкой в ​​позиции int .... – Adi

+0

set 'spin.setSelection (position);' вместо этого в вашем code 'spin.setSelection (position, false);' – sushildlh

+0

Stil same error .... – Adi

0

получите первое положение поворотника и пропустите другое действие с помощью намерения и установите первое положение поворотника на второй счетчик. (второй счетчик должен быть обычным, как наматывание с помощью edittext).

3
private List<Item> customerList = new ArrayList<Item>(); 

Список клиентов - это список моделей данных «Предмет», класс pojo.

position = customerList.indexOf(bundle.getString("name")); 

В этой строке вы пытаетесь получить индекс выбранного элемента, передав строку. Список массивов не сможет сравнить два разных типа объекта. Вам необходимо передать экземпляр «item»: position = customerList.indexOf (item);

И вы должны переопределить методы «equals» в классе Item, используя некоторые уникальные свойства класса. Этот метод equals будет использоваться для сравнения двух объектов, и список вернет индекс объекта, если он присутствует в списке. Пожалуйста, проверьте this и this для уточнения.

данных модальный класс

public class Item implements Serializable { 
int id; 
String name; 

public int getId() { 
    return id; 
} 

public void setId(int id) { 
    this.id = id; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

@Override 
public boolean equals(Object o) { 
    if (this == o) return true; 
    if (o == null || getClass() != o.getClass()) return false; 

    Item item = (Item) o; 

    if (getId() != item.getId()) return false; 
    return getName().equals(item.getName()); 

} 

}

класс активности

package spinner.sample.spinnerexample; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Spinner; 

import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity { 

private Spinner spinner; 
ArrayList<Item> customerList = new ArrayList<>(); 
SpinnerAdapter spinnerAdapter; 
public static final String EXTRA_INTENT_CUSTOMER_LIST ="extra_intent_customer_list"; 

public static final String EXTRA_INTENT_SELECTED_ITEM = "extra_intent_selected_item"; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    spinner = (Spinner)findViewById(R.id.spinner); 
    createList(); 
    spinnerAdapter = new SpinnerAdapter(customerList, this); 
    spinner.setAdapter(spinnerAdapter); 
} 


private void createList(){ 

    Item item1 = new Item(); 
    item1.setId(14); 
    item1.setName("Automobile"); 

    Item item2 = new Item(); 
    item2.setId(15); 
    item2.setName("Business Services"); 

    Item item3 = new Item(); 
    item3.setId(16); 
    item3.setName("Business"); 


    Item item4 = new Item(); 
    item4.setId(17); 
    item4.setName("Computers"); 


    Item item5 = new Item(); 
    item5.setId(18); 
    item5.setName("Computers Acc"); 

    Item item6 = new Item(); 
    item6.setId(19); 
    item6.setName("Education"); 

    Item item7 = new Item(); 
    item7.setId(20); 
    item7.setName("Personal"); 

    customerList.add(item1); 
    customerList.add(item2); 
    customerList.add(item3); 
    customerList.add(item4); 
    customerList.add(item5); 
    customerList.add(item6); 
    customerList.add(item7); 

} 

public void onClick(View view){ 
    if(customerList.isEmpty()) return; 
    Item selectedItem = (Item) spinner.getSelectedItem(); 
    System.out.println("Selected item "+selectedItem); 

    Intent intent = new Intent(this, SecondActivity.class); 
    intent.putExtra(EXTRA_INTENT_CUSTOMER_LIST, customerList); 
    intent.putExtra(EXTRA_INTENT_SELECTED_ITEM, selectedItem); 
    startActivity(intent); 
} 

}

активность 2

 package spinner.sample.spinnerexample; 

     import android.os.Bundle; 
     import android.support.v7.app.AppCompatActivity; 
     import android.widget.Spinner; 

     import java.util.ArrayList; 

     public class SecondActivity extends AppCompatActivity { 

     private Spinner spinner; 
     ArrayList<Item> customerList = new ArrayList<>(); 
     SpinnerAdapter spinnerAdapter; 
     Item selectedItem; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_second); 
     if(getIntent().hasExtra(MainActivity.EXTRA_INTENT_CUSTOMER_LIST)){ 
      customerList = (ArrayList<Item>) getIntent().getSerializableExtra(MainActivity.EXTRA_INTENT_CUSTOMER_LIST); 
     } 

     if(getIntent().hasExtra(MainActivity.EXTRA_INTENT_SELECTED_ITEM)){ 
      selectedItem = (Item)getIntent().getSerializableExtra(MainActivity.EXTRA_INTENT_SELECTED_ITEM); 
     } 


     spinner = (Spinner)findViewById(R.id.spinner); 

     if(customerList.isEmpty()) return; 
     spinnerAdapter = new SpinnerAdapter(customerList, this); 
     spinner.setAdapter(spinnerAdapter); 
     if(selectedItem != null){ 
      spinner.setSelection(customerList.indexOf(selectedItem)); 
     } 
    } 
} 

Adapter : 

     package spinner.sample.spinnerexample; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 

import java.util.ArrayList; 

/** 
* Created by praveen on 17/8/16. 
*/ 

public class SpinnerAdapter extends BaseAdapter { 

    ArrayList<Item> categories = new ArrayList<>(); 
    Context mContext; 

    public SpinnerAdapter(ArrayList<Item> categories, Context context){ 
     this.categories = categories; 
     mContext = context; 
    } 

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

    @Override 
    public Object getItem(int i) { 
     return categories.get(i); 
    } 

    @Override 
    public long getItemId(int i) { 
     return categories.get(i).hashCode(); 
    } 

    @Override 
    public View getView(int i, View view, ViewGroup viewGroup) { 

     Item item = categories.get(i); 
     ViewHolder holder = null; 
     if(view == null){ 
      view = LayoutInflater.from(mContext).inflate(R.layout.spinner_item, null); 
      holder = new ViewHolder(); 
      holder.name = (TextView) view.findViewById(R.id.txt_view_spinner_item); 
      view.setTag(holder); 
     } else { 
      holder = (ViewHolder) view.getTag(); 
     } 
     holder.name.setText(item.getName()); 
     return view; 
    } 

    static class ViewHolder{ 
     TextView name; 
    } 

} 
+0

plz см. Мои внимательно, данные, заполненные с сервера, в обоих действиях. – Adi

+0

Я дал данные с жесткой кодировкой, как только для демонстрационной цели. – Praveen

+0

В вашем случае источником данных является сервер, но данные в обоих действиях одинаковы. Вы анализируете дату в классе модели с именем «Item». spinner в обоих действиях имеет источник данных - это список «элементов». Вы не реализовали ни одну сравнительную логику в своем классе «Предмет». поэтому строка «customerList.indexOf» (bundle.getString («name»)) не сможет найти позицию элемента. Вы должны переопределить метод equals в классе Item и добавить логику сравнения и изменить свой «spin». getSelectedItem(). toString() "to spin.getSelectedItem(). Пожалуйста, позвольте мне, если это работает – Praveen

0

позволяет предполагать ваш position правильно, но вы можете проверить с помощью простого Log.d(tag, "pos:"+position) и что ваша вертушка в настоящее время правильно заполняется customerList (вы можете визуально проверить, что или Log.d(tag, "size:"+adapter.getCount()) или spin.getCount())

2 вещи (или оба) в попробуйте:

  1. ваш adapter.notifyDataSetChanged() должен прийти сразу после customerList.addAll(position,customerList). если вы делаете setSelection до этого, то ваш прядильщик по-прежнему пуст.

  2. небольшой шанс, что ваши вертушка пользовательский интерфейс еще не готов, так это сделать:

    spin.post(new Runnable() { 
        @Override 
        public void run() { 
         spin.setSelection(position); 
        } 
    }); 
    
1

Я нашел решение. Попробуйте изменить как код активности с этим,

public class MainActivity extends AppCompatActivity{ 


private ArrayList<Item> customerList = new ArrayList<Item>(); 
private SpinnerAdapter adapter; 
public static final String EXTRA_INTENT_CUSTOMER_LIST ="extra_intent_customer_list"; 

public static final String EXTRA_INTENT_SELECTED_ITEM = "extra_intent_selected_item"; 
private List<Item> items; 
Spinner spin; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    // getLayoutInflater().inflate(R.layout.activity_main, null); 

    Button login = (Button) findViewById(R.id.login); 
    spin = (Spinner) findViewById(R.id.service_spinner); 

    assert login != null; 
    login.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) { 

      if (spin.getSelectedItemPosition() == 0) { 

       Toast.makeText(MainActivity.this, "Please Select item", Toast.LENGTH_SHORT).show(); 

      } 
      else { 

       if(customerList.isEmpty()) return; 
       Item selectedItem = (Item) spin.getSelectedItem(); 
       Intent intent = new Intent(MainActivity.this, SecondActivity.class); 
       intent.putExtra(EXTRA_INTENT_SELECTED_ITEM, spin.getSelectedItemPosition()); 
       startActivity(intent); 
      } 
     } 

    }); 

    for (int i = 0; i < 1; i++) { 

     Item customer = new Item(); 
     customer.setId(""+i); 
     customer.setName("Select Obj"); 

     // adding movie to movies array 
     customerList.add(customer); 
    } 

    adapter = new SpinnerAdapter((ArrayList<Item>) customerList, this); 
    spin.setAdapter(adapter); 


} 

public void onStart(){ 
    super.onStart(); 
    BackTask bt=new BackTask(); 
    bt.execute(); 

} 
private class BackTask extends AsyncTask<Void,Void,ArrayList<Item>> { 

    protected void onPreExecute(){ 
     super.onPreExecute(); 

    } 
    protected ArrayList<Item> doInBackground(Void... params) { 
     InputStream is = null; 
     String result = ""; 
     try { 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://my_url/json"); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      // Get our response as a String. 
      is = entity.getContent(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     //convert response to string 
     try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8")); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       result += line; 
      } 
      is.close(); 
      //result=sb.toString(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     // parse json data 
     try { 
      JSONArray jArray = new JSONArray(result); 
      for (int i = 0; i < jArray.length(); i++) { 
       JSONObject obj = jArray.getJSONObject(i); 
       Item customer = new Item(); 
       customer.setId(obj.getString("ServiceId")); 
       customer.setName(obj.getString("ServiceName")); 

       // adding movie to movies array 
       customerList.add(customer); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return customerList; 
    } 
    @Override 
    protected void onPostExecute(ArrayList<Item> customerList) { 
     if(customerList != null && !customerList.isEmpty()){ 
      // adapter.updateDate(customerList); 
      adapter.notifyDataSetChanged(); 
     } 
    } 

}} 

И SecondActivity:

public class SecondActivity extends AppCompatActivity { 

private static final String REGISTER_URL = "http://my_url/Service.asmx/GenerateTicket"; 

public static final String PREFS_NAME = "MyPrefsFile"; 

public static final String CUSTOMERID = "customerId"; 
public static final String USERNAME = "name"; 
public static final String HOUSENO = "houseNo"; 
public static final String LOCALITY = "areaName"; 
public static final String SERVICE = "serviceId"; 
public static final String MOBILE = "mobile"; 
public static final String EMAIL = "email"; 
public static final String PROBLEM = "jobBrief"; 
private ProgressDialog pDialog; 
Spinner spin; 
String service; 
Item selectedItem; 
// flag for Internet connection status 
Boolean isInternetPresent = false; 

private ArrayList<Item> customerList = new ArrayList<Item>(); 
private SpinnerAdapter adapter; 
private List<Item> items; 

AdapterView.OnItemSelectedListener listener; 

Spinner service_need; 
AutoCompleteTextView autoCompView; 
String obj; 
int pos; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_second); 
    //getLayoutInflater().inflate(R.layout.activity_second, null); 

    if(getIntent().hasExtra(MainActivity.EXTRA_INTENT_SELECTED_ITEM)){ 
     pos = getIntent().getIntExtra(MainActivity.EXTRA_INTENT_SELECTED_ITEM,0); 

    } 

    service_need = (Spinner) findViewById(R.id.service_need); 

    for (int i = 0; i < 1; i++) { 

     Item customer = new Item(); 
     customer.setId(""+i); 
     customer.setName("Select Obj"); 

     // adding movie to movies array 
     customerList.add(customer); 
    } 


    adapter = new SpinnerAdapter(customerList, this); 

    service_need.setAdapter(adapter); 

} 

public void onStart() { 
    super.onStart(); 
    BackTask bt = new BackTask(); 
    bt.execute(); 
} 

private class BackTask extends AsyncTask<Void, Void, ArrayList<Item>> { 
    ArrayList<String> list; 

    protected void onPreExecute() { 
     super.onPreExecute(); 


    } 

    protected ArrayList<Item> doInBackground(Void... params) { 
     InputStream is = null; 
     String result = ""; 
     try { 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://my_url/json"); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      // Get our response as a String. 
      is = entity.getContent(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     //convert response to string 
     try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8")); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       result += line; 
      } 
      is.close(); 
      //result=sb.toString(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     // parse json data 
     try { 
      JSONArray jArray = new JSONArray(result); 
      for (int i = 0; i < jArray.length(); i++) { 
       JSONObject obj = jArray.getJSONObject(i); 
       Item customer = new Item(); 
       customer.setId(obj.getString("ServiceId")); 
       customer.setName(obj.getString("ServiceName")); 
       customerList.add(customer); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return customerList; 
    } 

    @Override 
    protected void onPostExecute(ArrayList<Item> customerList) { 
     if(customerList != null && !customerList.isEmpty()){ 

      service_need.setSelection(pos); 

     } 

    } 
}} 

Issue1: NullPointerException в SecondActivity из-за нулевой объект блесна. Идентификатор Spinner во втором действии - Service_need.

Issue2: Back_task DoInBackground метод в SecondActivity возвращает null, он должен возвращать ArrayList для проверки в OnPostExecute.

Спасибо.

Надеюсь, это поможет.!

+0

Это не работает bro ..... Все еще не меняя положение второго спиннсера в соответствии с одним из них .. – Adi

+0

Можете ли вы, пожалуйста, уточнить, какую ошибку вы получили сейчас, я проверяю ваш код только своей работой. @Adi –