2011-09-19 3 views
1

이것은 내 헤더입니다getTag()에 대한 어댑터 문제, 반환 null

public class MyAdapter extends ResourceCursorAdapter implements OnScrollListener { 

내 어댑터에

  public View newView(Context context, Cursor cursor, ViewGroup parent) { 
       final View view = super.newView(context, cursor, parent); 
       final MyCache cache = new MyCache(); 
      view.setTag(cache); 
      } 

public void metA(){ 
//here I want to read the tag 
//how can I do that ? 
} 

xppx

getItem (0)을 시도했지만 널 포인터 예외도 발생합니다 ... onScroll 메서드에서 태그를 읽는 올바른 방법은 무엇입니까? 실제로 뷰에 포함 된 내용은 무엇입니까? 나는 아주 어리 석음을하지만 나는 알아 내지 못한다는 것을 알고있다.

+0

어댑터의 전체 소스를 볼 수 있습니까? – Alex

+0

너무 큽니다. 그러나 어댑터 자체는 문제가 아닙니다. 내 질문은 setTag() set newView 메서드에서 뷰의 태그 (getTag())를 가져 오는 방법입니다. 내 문제는 어떻게 태그를 읽는가? – Lukap

답변

0

getTag() 메서드의 경우 View 선언에서 final 키워드를 제거해야합니다. 문제가 될 수 있습니다 (100 % 확신 할 수 없음). 또한 나는 whay yoru MyCache() 클래스가하고있는 이유와 각각 ViewMyCache 개체를 설정해야하는 이유를 모르겠습니다. 어쩌면 MyCache 인스턴스 하나를 어댑터 클래스 변수로 추가하는 것이 더 나은 솔루션 일 수 있습니다.

그리고 getItem() 메서드의 경우이 메서드를 제대로 구현했으며 개체 목록에서 항목을 반환해야합니다.

View에서 태그를 얻으려면 당신은 사용할 필요가 :

(MyCache)view.getTag(); 

편집 :

: 그냥 getView() 방법의 매개 변수 convertView를 사용하여 getView() 방법에 View tag를 얻을 수
 public View getView(int position,View convertView,ViewGroup parent){ 
      if(convertView!=null) 
       (MyCache)convertView.getTag(); 
      // code.... 
     } 
+0

나는 알고있다 :). 요점은 getview 메소드의 뷰와 동일한 뷰가 아니라는 뷰를 가지고 있지 않다는 것입니다. "public void metA()"이 메서드에서 태그를 가져 오는 방법은 무엇입니까? 그건 getview에서 태그를 얻지 못하는 문제입니다. 죄송합니다. 어쩌면 제가 물어볼 때 좋은 설명을하지 못했을 것입니다 ... – Lukap