我想将Json值设置为微调器列表。我有的数据:
JSONArray lang = jsonObject.getJSONArray("languages");
for (int i = 0; i < lang.length(); i++) {
String language = lang.getString(i);
}
如何将String值加载到微调器列表中?
答案 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