在应用程序级别将值从json数组设置为spinner

时间:2015-06-01 11:43:33

标签: android android-activity

我想将Json值设置为微调器列表。我有的数据:

JSONArray lang = jsonObject.getJSONArray("languages");

for (int i = 0; i < lang.length(); i++) {
    String language = lang.getString(i);
}

如何将String值加载到微调器列表中?

3 个答案:

答案 0 :(得分:1)

ArrayAdapter<String> arrayAdapter = new ArrayAdapter(yourContext, android.R.layout.activity_list_item)
arrayAdapter.addAll(langList); // you need to add your lang.getString(i) to an array
yourSpinner.setAdapter(arrayAdapter);

瞧!

答案 1 :(得分:0)

据我了解您的问题,您有记录列表,并且您希望在多个活动的微调器中显示它们。 为此,您可以创建一个扩展Application Class的类,并在该类中创建一个列表。

一旦您收到来自应用程序类列表中的web api set数据的响应。

现在,您希望在Spinner中显示数据,从Application类获取它并渲染您的微调器

见下面的例子 -

public class MyApp extends Application{

   private static ArrayList<String> mDataArrayList;

   public static ArrayList<String> getmDataArrayList() {
      return mDataArrayList;
   }
   public static void setmDataArrayList(ArrayList<String> mDataArrayList) {
       MyApp.mDataArrayList = mDataArrayList;
   }

    @Override
    public void onCreate() {
       super.onCreate();
    }

  }

在您的问题中编码时调用您的网络API并解析数据 -

       ArrayList<String> mArrayList = new ArrayList<String>();
       for (int i = 0; i < lang.length(); i++) {
             String language = lang.getString(i);
             mArrayList.add(language);
        }
       //Set Application class list
           MyApp.setmDataArrayList(mArrayList);

现在,当您想要在任何类中显示数据时,请通过调用 -

获取列表
ArrayList<String> mArrayList = MyApp.getmDataArrayList();
//Code to display data in Spinner

希望它会对你有所帮助。

并且不要忘记将其添加到您的应用程序的清单中 -

 <application
    android:allowBackup="true"
    android:name=".MyApp"
    ....>
   ....
  </application>

答案 2 :(得分:0)

我建议你将Spinner类活动用于未来的用法。以下是微调器活动类(数据接收器和显示器)的示例:

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;

public class mySpinnerClass extends Activity implements
        OnItemSelectedListener {

    Spinner spinner;

    int selectedValue;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.spinner);
        selectedValue = -1;

        Intent i = getIntent();
        dataSelector = i.getStringExtra("MessageText");

        // Spinner element
        spinner = (Spinner) findViewById(R.id.mySpinner);

        // Spinner click listener
        spinner.setOnItemSelectedListener(this);

        // Loading spinner data
        loadSpinnerData();
    }

    private void loadSpinnerData() {

        // Spinner Drop down elements
        List<String> lables = yourData.get(dataSelector);

        // Creating adapter for spinner
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, lables);

        // Drop down layout style - list view with radio button
        dataAdapter
                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        // attaching data adapter to spinner
        spinner.setAdapter(dataAdapter);
    }


    public void onItemSelected(AdapterView<?> parent, View arg1, int position, long arg3) {
        // TODO Auto-generated method stub
        String label = parent.getItemAtPosition(position).toString();
        //get the label and do anything you want with it
    }

    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }

}

在来电者活动中:

Intent i = new Intent(getApplicationContext(), mySpinnerClass.class);
 i.putExtra("MessageText",yourData);
 startActivity(i);  

如果要发送非原始数据(在您的示例中,这是一个列表),您需要在发送和接收时使用Serializable类型。以下链接很好地说明了这项技术:

http://javatechig.com/android/pass-a-data-from-one-activity-to-another-in-android