这里我将数据保存在数组列表中,即学期列表: -
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET,
"http://www.mytat.in/API/semester?tokenno=xvub4jey66c7ec6tb4j7g83ghjls353\n", new JSONObject(postParam),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.e("response", response.toString());
try {
JSONArray output = response.getJSONArray("output");
Log.e("semester",output.toString());
for ( int j =0 ; j<output.length();j++) {
JSONObject semester = output.getJSONObject(j);
Log.e("semester value", semester.toString());
for (int i = 0; i<semester.length();i++){
Map<String,String> map = new HashMap<String,String>();
Iterator iterator = semester.keys();
while (iterator.hasNext()){
String key = (String) iterator.next();
Log.e("key", key);
String value = semester.getString(key);
Log.e("value", value);
if (key .equals("semester")){
semesterlist.add(value);
Log.e("semesterlist",semesterlist.toString());
}
}
break;
}
}
} catch (JSONException e) {
Log.e("responsejson", "Error: " + e.toString());
}
hidepDialog();
}
}, new Response.ErrorListener()
这是我的适配器
ArrayAdapter<String> studentsem= new ArrayAdapter<String>(getActivity(),android.R.layout.simple_spinner_item,semesterlist);
studentsem.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnersemester.setAdapter(studentsem);
spinnersemester.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view,
int position, long id) {
Object item = adapterView.getItemAtPosition(position);
if (item != null) {
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
// TODO Auto-generated method stub)
}
});
这是我的布局
<Spinner
android:layout_width="match_parent"
android:layout_height="35dp"
android:id="@+id/spinner_one"
android:layout_marginTop="20dp"
android:background="@color/loginbg">
</Spinner>
答案 0 :(得分:0)
尝试将getActivity()更改为getBaseContext()
ArrayAdapter<String> studentsem= new ArrayAdapter<String>(getBaseContext(),android.R.layout.simple_spinner_item,semesterlist);
studentsem.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
我用你的适配器尝试它,它工作。
答案 1 :(得分:0)
try this
public class MainActivity extends AppCompatActivity {
public Spinner spinner;
public ArrayList<SpinnerItems> arr_spiner;
public SpinnerItems spinnerItem;
public SpinnerAdapterClass adapter;
public String sSelectedItem;
public TextView txtSpinnerValue;
public static String sTestData ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
arr_spiner = new ArrayList<SpinnerItems>();
getData("http://www.mytat.in/API/semester?tokenno=xvub4jey66c7ec6tb4j7g83ghjls353");
initailazation();
spinnerItem = new SpinnerItems();
spinnerItem.setId(null);
spinnerItem.setName("Select Semester");
arr_spiner.add(0, spinnerItem);
adapter =new SpinnerAdapterClass(MainActivity.this ,arr_spiner);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
sSelectedItem = arr_spiner.get(spinner.getSelectedItemPosition())
.getName();
txtSpinnerValue.setText(sSelectedItem);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
private void initailazation() {
spinner=(Spinner)findViewById(R.id.sp_terminal);
txtSpinnerValue=(TextView)findViewById(R.id.txt_serSpinnerValue);
}
public void getData(String s){
StringRequest stringRequest =new StringRequest(Request.Method.GET, s, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray("output");
for(int i=0 ; jsonArray.length()>0; i++){
JSONObject data = jsonArray.getJSONObject(i);
String semester = data.getString("semester");
String id = data.getString("id");
spinnerItem = new SpinnerItems();
spinnerItem.setId(id);
spinnerItem.setName(semester);
arr_spiner.add(spinnerItem);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}}
Main Layout file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="nfcdemo.equesttect.com.spinnerdemo.MainActivity">
<Spinner
android:id="@+id/sp_terminal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true" />
<TextView
android:id="@+id/txt_serSpinnerValue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:textColor="@color/black" />
</RelativeLayout>
Spinner Item file
package nfcdemo.equesttect.com.spinnerdemo;
public class SpinnerItems {
private String id = null;
private String name = null;
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;
}
}
Spinner Adapter File
public class SpinnerAdapterClass extends BaseAdapter {
ArrayList<SpinnerItems> item_list;
Context mContext;
ArrayList<String> arrayList_string;
public SpinnerAdapterClass(Context context,
ArrayList<SpinnerItems> item_list) {
super();
this.item_list = item_list;
this.mContext = context;
}
@Override
public int getCount() {
return item_list.size();
}
@Override
public Object getItem(int position) {
return item_list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
private class ViewHolder {
TextView txt_name;
}
@Override
public View getView(int position, View convertView, ViewGroup container) {
ViewHolder viewHolder = null;
if (convertView == null) {
// if it's not recycled, initialize some attributes
LayoutInflater mInflater = (LayoutInflater) mContext
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.list_raw,
container, false);
viewHolder = new ViewHolder();
viewHolder.txt_name = (TextView) convertView
.findViewById(R.id.txt_name);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.txt_name.setText("" + item_list.get(position).getName());
return convertView;
}
}
row file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="vertical" >
<TextView
android:id="@+id/txt_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:padding="10dp"
android:textAllCaps="true"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/black" />
</LinearLayout>
<uses-permission android:name="android.permission.INTERNET" />
Hope its work