2013-06-04 3 views
0

저는 baseexpandablelistadapter를 작성하고 있습니다. 그 안에, 검색 매개 변수로 전달할 문자열이 필요한 sqlite 쿼리를 실행하고 싶습니다. 이 문자열을 공유 환경 설정에 저장 했으므로 이제이를 검색하려고합니다. 불행히도, 나는 이것을 할 수없는 것 같습니다.baseexpandablelistadapter 내에서 공유 환경 설정 가져 오기

public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View view, ViewGroup parent) { 
     ClientSmartFinderSettings child = (ClientSmartFinderSettings) getChild(groupPosition, childPosition); 
     ViewHolder holder; 
     if (view == null) { 
      holder = new ViewHolder(); 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 
      view = inflater.inflate(R.layout.expandlist_child_item, null); 
      holder.checkBox = (CheckBox) view.findViewById(R.id.check_box); 
      view.setTag(holder); 
     } else { 
      holder = (ViewHolder) view.getTag(); 
     }  

     try { 
      //this is where the error is 
      SharedPreferences sharedPref = getSharedPreferences("FileName", MODE_PRIVATE); 

      holder.checkBox.setChecked(child.getIsSelected()); 
     } catch (Exception e) { 

     } 


     return view; 
    } 

오류 :

MODE_PRIVATE 변수

에 해결 될 수없는 내가 MODE_PRIVATE는 활동에 적용 할 수 만 보인다 것으로 알고 있습니다. 그렇다면 어떻게하면 기본 확장 가능한 목록 아답터의 내부에서 공유 환경 설정을 검색 할 수 있습니까?

감사합니다. 된 SharedPreferences가에 단 한 번 개체를 내가 만들 것이다, 또한

SharedPreferences sharedPreferences = context.getSharedPreferences("FileName", Context.MODE_PRIVATE); 

: 우선

+0

'Context.MODE_PRIVATE' 여야합니다. – hardartcore

+0

제안 해 주셔서 감사합니다. 나는 그것을 시도했다. "메소드 getSharedPreferences (String, int)가 ExpandListAdapter 유형에 대해 정의되지 않았습니다." – Alex

+0

어댑터의 생성자에서 Context 매개 변수를 제공하고 'mContext.getSharedPreferences (String, int);'로 사용해야합니다. – hardartcore

답변

2

, 그것은 창조와 어댑터 뷰 AdapterView에 뷰를 바인딩하는 동안 쿼리를 실행하지만, 귀하의 질문에 대답하는 좋은 방법이 아니다 귀하의 어댑터 클래스의 생성자 (거기에 컨텍스트 개체를 전달할 수 있습니다). 이 위화감은 스크롤링 hickups을 제거합니다.

+0

나는 이것이 좋은 생각이 아니라는 데 동의하지만, 나는 그 순간에 가장 좋은 생각이다. 냄새가 나는지 알 수 있습니다. 나는 당신의 제안을 생성자 안에서 이것을하기 위해 사용했다. 그게 내 문제의 많은 부분을 해결해 줬어. 내가 사용한 마지막 라인 (생성자 내부)은 다음과 같습니다. "sharedPref = context.getSharedPreferences ("FileName ", Context.MODE_PRIVATE);" 당신의 도움을 주셔서 감사합니다. – Alex

+0

BTW, 당신의 충고에 따라 어댑터 내부의 공유 환경 설정을 검색하지 않고이를 수행하는 방법을 알아 냈습니다. 나는 어댑터가 무엇을 할 수 있었는지 알지 못했고, 이제는 그 목적을 훨씬 잘 이해하고 있습니다. 그 충고 +1. 그것은 내가 조금 더 열심히 생각하게했다. 다시 한 번 감사드립니다! – Alex

+0

여러분을 환영합니다! 다행스럽게 도울 수있어! – Cliffus