Glide4.8 Glide - You must not call setTag() on a view Glide is targeting

원인 Glide가 tag 사용하고 있기 때문에


for(int i=0; i < max; i++)
{
    imageView.setTag( items.get(i) ); // ←ここで例外が上がってしまう。
    Glide.with(this)
    // (略)
        .into(imageView);
}

대책 실패편


  • Error “You must not call setTag() on a view Glide is targeting” when use Glide

  • 를 참고해 보자
    public class App extends Application {
        @Override public void onCreate() {
            super.onCreate();
            ViewTarget.setTagId(R.id.glide_tag);
        }
    }
    

    src/main/values/ids.xml
    <resources>
        <item type="id" name="glide_tag" />
    </resources>
    





    아~ 이 정보는 낡았다.

  • Glide v4 Targets
    를 보았다. 모르는 XD

  • 대책 성공의 길


  • Tag alternative when using Glide
  • myButton.setTag(100 /* or any other integer key except 0 */, someValue);
    

    과연~

    이것이군요.
    public class View implements Drawable.Callback, KeyEvent.Callback, AccessibilityEventSource {
        public void setTag(int key, final Object tag) 
        public Object getTag(int key) 
    

    해보자.
        imageView.setOnClickListener(imageViewLister);
        for(int i=0; i < max; i++)
        {
            imageView.setTag(i, items.get(i) );
        }
    

    이것이 key의 i가 상수가 아니기 때문에 화가났다;
    이런 식으로 상수를 자르고 싶지 않아 ... ( '· ω ·`)

    대책 성공편



    (✧Д✧) 자신의 ID라는 상수가 있어!!



    1건 낙착
        imageView.setOnClickListener(imageViewLister);
        for(int i=0; i < max; i++)
        {
            imageView.setTag(imageView.getId(), items.get(i) );
        }
    
        private View.OnClickListener imageViewLister =  new View.OnClickListener() {
            @Override
            public void onClick(View view)
            {
                Item item = view.getTag(view.getId());
            }
        };
    
    

    좋은 웹페이지 즐겨찾기