2014-09-09 4 views
0

나는 스피너 두 개가 각각 텍스트보기와 ProgressBar를 포함하고 있습니다. 두 번째 Sprinner의 1rst 스피너에서 요소를 선택하면 ProgressBar가 표시되고 스피너가 채워진 후 스피너가 채워진 후 서버에 요청하여 일부 데이터를 가져 와서 스피너를 채워야합니다. progressBar는 사용할 수 없습니다. 두 번째 회 전자에서 1rst 회 전자에서 요소를 선택한 직후 ProgressBar가 표시되고 (요청 됨) 두 번째 회 전자에서 항목을 선택한 경우에만 ProgressBar가 숨겨집니다. 코드에서 무엇을 변경해야할지 모르겠다. 제발 도와주세요. 이 내 코드입니다 :스피너보기를 올바르게 업데이트하는 방법

회 전자 : 스피너와

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 


    View row = mInflater.inflate(...); 
    TextView itemView = (TextView) row.findViewById(...); 
    mProgressBar = (ProgressBar) row.findViewById(...); 
    //mProgressBar.setVisibility(View.INVISIBLE); 
    T item = getItem(position); 
    String itemLabel = null; 
     itemLabel = mContext.getString(R.string.dialog_filters_item, item.getName()); 

    } 
    itemView.setText(itemLabel); 
    return row; 
} 

@Override 
public void setProgressBarVisibility(final boolean visibility) { 
    if (mProgressBar != null) { 
     if (visibility) { 
      mProgressBar.setVisibility(View.VISIBLE); 
     } else { 
      mProgressBar.setVisibility(View.INVISIBLE); 
     } 


     Log.v(TAG, "changed visibility on spinner " + visibility); 
    } 


} 

조각 :

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 



    ....  //spinner1 && spniner2 methods run on UI Threads 
    spinner1SetProgressBarVisibility(true); 
    spinner2SetProgressBarVisibility(false);  //request to server 
    mHost.populateSpinner1();  .... 
    return v; 
} 


private void populateSpinner1Spinner(List<Data> dataServerItems) { 
    Data dataAll = new Data(); 
    dataAll.setDepName(...); 
    dataAll.setDepNumber(...); 
    mDataItems.clear(); 
    mDataItems.add(dataAll); 
    if (dataServerItems != null) { 
     mDataItems.addAll(dataServerItems); 
    } 
    spinner1SetProgressBarVisibility(false); 
    spinner2SetProgressBarVisibility(false); 


    mSpinner1DataAdapter.notifyDataSetChanged(); 


} 
private void populateSectionsSpinner(List<Data2> dataServerItems) { 
    Data2 dataAll = new Data2(); 
    dataAll.setSectionName(getString(...)); 
    dataAll.setSectionNumber(...); 
    mData2Items.clear(); 
    mData2Items.add(0, dataAll); 
    if (dataServerItems != null) { 
     mSectionItems.addAll(dataServerItems); 
    spinner1SetProgressBarVisibility(false); 
    spinner2SetProgressBarVisibility(false); 
    mSpinner2DataAdapter.notifyDataSetChanged(); 

} 


@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    Log.v(TAG, "onItemSelected, position=" + position); 
    switch (parent.getId()) { 
     case R.id.spinner1: 
      spinner1SetProgressBarVisibility(false); 
       mHost.getData2(); 
      spinner2SetProgressBarVisibility(true); 
      break; 
     case R.id.spinner2: 
       ... 
       break; 

      } 

} 

@Override 
public void onNothingSelected(AdapterView<?> parent) { 
    // Not used 
} 

@Override 
public void onDataUpdate(List<Data> dataServerItems) { 
    populateSpinner1Spinner(List<Data> dataServerItems); 

} 
@Override 
public void onData2Update(List<Data2> dataServerItems) { 
    populateSpinner2Spinner(List<Data> dataServerItems); 

} private void spinner1SetProgressBarVisibility(final boolean isVisible) { 
    getActivity().runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      mSpinner1DataAdapter.setProgressBarVisibility(isVisible); 
     } 
    }); 
} 

private void spinner2SetProgressBarVisibility(final boolean isVisible) { 
    getActivity().runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      mSpinner2DataAdapter.setProgressBarVisibility(isVisible); 


     } 
    }); 
} } 

답변

0

문제는 CustomAdapter에 의해 발생했다. 켜짐 진행 표시 줄의 기본 표시 여부는 false로 설정됩니다.

관련 문제