비슷한 문제이므로, 이렇게 해결했습니다. 먼저 데이터 전송 객체 (예 : getter 및 setter)를 만듭니다.
public class NameCodeDTO {
private int id;
private int code;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
는 그런 다음 JSON 문자열이 당신을 도움이되기를 바랍니다
public class MainActivity extends Activity implements OnItemSelectedListener{
private Spinner mySpinner;
List<NameCodeDTO> nameIdList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
mySpinner=(Spinner)findViewById(R.id.my_spinner);
mySpinner.setOnItemSelectedListener(this);
//do json parsing here for json structure [{id:1, name:a}{id:2, name:b}]
nameIdList=new Array<NamecodeDTO>();
JSONArray ja;
try {
ja = new JSONArray (s);
for (int i = 0; i < ja.length(); i++) {
JSONObject jObj = ja.getJSONObject (i);
String name=jObj.getString("name");
String id=jObj.getString("id");
NameCodeDTO nameCodeDTO= new NameCodeDTO();
nameCodeDTO.setName(name);
nameCodeDTO.setId(id);
nameIdList.add(NameCodeDTO);
}
}
catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//you_spinner_text.xml layout has TextView with id is tv_spinner_simple
mySpinner.setAdapter(new SpinnerNameCodeAdapter (this,R.id.your_spinner_text, nameIdList));
}
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
NameCodeDTO nameId=(NameCodeDTO)(adapterView).getItemAtPosition(position);
// this gives the desired answer
Log.i("spinner name::",nameId.getName());
Log.i("spinner id::", nameId.getId());
}
}
MainActivity
에서 사용할 수
public class SpinnerNameCodeAdapter extends ArrayAdapter<NameCodeDTO> {
private Context mContext;
private List<NameCodeDTO> nameCodeDTOList;
private int layoutId;
LayoutInflater inflater=null;
public SpinnerNameCodeAdapter(Context mContext, int resource,List<NameCodeDTO>nameCodeDTOList) {
super(mContext, resource,nameCodeDTOList);
this.mContext=mContext;
this.layoutId=resource;
this.nameCodeDTOList=nameCodeDTOList;
inflater=(LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return nameCodeDTOList.size();
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public NameCodeDTO getItem(int position) {
return nameCodeDTOList.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
@Override
public View getDropDownView(int position, View view, ViewGroup parent) {
return getCustomView(position,view,parent);
}
public View getCustomView(int position, View view, ViewGroup parent){
ViewHolder holder=new ViewHolder();
if(view==null){
view = inflater.inflate(layoutId, null, false);
holder.spinnerText=(TextView)view.findViewById(R.id.tv_simple_spinner);
view.setTag(holder);
}else{
holder = (ViewHolder) view.getTag();
}
NameCodeDTO nameCodeDTO=nameCodeDTOList.get(position);
holder.spinnerText.setText(nameCodeDTO.getName());
return view;
}
public class ViewHolder{
TextView spinnerText;
}
가} 가정 할 때,이 같은 사용자 정의 스피너 어댑터를 만들 수 있습니다.
여기에 코드를 게시하십시오. –
시도해 보셨습니까? –
arraylist를 만들고 for 루프를 사용하여 JSONArray를 구문 분석하여 요소 (a, b, c 등)를 추가합니다. 그런 다음 Arraylist를 사용하여 회 전자를 채 웁니다. –