原因 Glideがtag使ってるから
for(int i=0; i < max; i++)
{
imageView.setTag( items.get(i) ); // ←ここで例外が上がってしまう。
Glide.with(this)
// (略)
.into(imageView);
}
対策 失敗編
を参考にしてみる
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
対策 成功への道
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という定数あるじゃん!!
一件落着
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());
}
};