0

Textview@android:id/text1에서 팽창시킬 수 있습니까? 자신 만의 레이아웃을 만들고 싶지 않습니다. 약간 수정 된 텍스트를 얻으실 수 있습니다.ActionBarSherlock에 의해 확장 된 안드로이드 스피너 레이아웃을 부 풀릴 수 있습니까?

여기 내 코드입니다 :

첫째, 내가

private List<HashMap<String, String>> dataCities = new ArrayList<HashMap<String, String>>(); 
//Hashmap with keys and values 
//id - 0 
//name - default 

두 번째로 데이터를 저장하는 변수를 생성, 나는 내 리스너를 생성,

@Override 
protected void onCreate(Bundle savedInstanceState) { 
//... 
Spinner citiesSpinner = (Spinner) findViewById(R.id.city_sp); 
citiesAdapter = new CustomArrayAdapter(this, R.layout.sherlock_spinner_item, dataCities); 
citiesSpinner.setAdapter(citiesAdapter); 
} 

세 번째에서 onCreate

에서 사용자 정의 어댑터를 만들었습니다. 그것은 작동하지만 notifyDataSetChanged를 호출 한 후에는 아무 일도 일어나지 않습니다. 왜? 여기

@Override 
public void onRequestJsonResponded(RequestType type, JSONArray array) { 
    //my enum type 
    switch (type) { 
     case cities: 
      //returns hashmap in arraylist, ArrayList<HashMap<String,String>> ... 
      dataCities = parseJSonArray(array); 
      Log.d(TAG, "End of parsing"); 
      citiesAdapter.notifyDataSetChanged(); 
      break; 
     case mark: 
      //... 
      break; 
     case model: 
      break; 
    } 
} 

내가 빈 회 전자 데이터를 얻을 왜 누군가가 나에게 수

private class CustomArrayAdapter extends ArrayAdapter<HashMap<String, String>> { 

    public CustomArrayAdapter(Context context, int textViewResourceId, List<HashMap<String, String>> objects) { 
     super(context, textViewResourceId, objects); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater layoutInflater = LayoutInflater.from(getContext()); 
     View v = layoutInflater.inflate(R.layout.sherlock_spinner_item, null); 
     TextView tv = (TextView)v.findViewById(android.R.id.text1); 
     tv.setText(getItem(position).get("name")); 

     return v; 

    } 

} 

ArrayAdapter와 내 사용자 정의입니까? (회 전자는 비어 있음). 그리고 새로운 레이아웃을 만들지 않고 수정 된 텍스트를 얻는 방법은 무엇입니까? sherlock 스피너 아이템 레이아웃을 사용하고 싶습니다. 도와주세요.

 //In here you update your activity's list to the returned values 
     dataCities = parseJSonArray(array); 
     Log.d(TAG, "End of parsing"); 
     //But the adapter is using the original value of dataCities (new ArrayList<HashMap<String, String>>()) 
     citiesAdapter.notifyDataSetChanged(); 

어댑터가 ArrayAdapter와에 의존하기 때문에, 가장 쉬운 해결책은 단지 새 어댑터를 만들 수 있습니다 데이터 : 간단한

답변

0

은 어댑터의 목록은 검색 목록과 동일하지 않습니다 수신됩니다.

+0

제발, notifyDataSetChanged가 여기에서 작동하지 않는 이유를 말해 주실 수 있습니까? – deadfish

+0

Errr "간단합니다. 어댑터의 목록이 검색 한 목록과 다릅니다." 코드 스 니펫에서 자세히 설명합니다. – dmon