FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Android] 原因不明の Resource NotFound exception

Android アプリで、左端に画像の付いた ListView を実現しようとして、以下のようなカスタムアダプタクラスを作った。


package jp.hoge.Test02;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MyImageListAdapter extends ArrayAdapter {

private LayoutInflater mLayoutInflater;

public MyImageListAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
mLayoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyImageListData item = (MyImageListData)getItem(position);

if (null == convertView) {
convertView = mLayoutInflater.inflate(R.layout.main_list_row, null);
}

ImageView imageView = (ImageView)convertView.findViewById(R.id.image);
imageView.setImageBitmap(item.getImageData());

TextView textView = (TextView)convertView.findViewById(R.id.text);
textView.setText(item.getTextData());

return convertView;
}
}



ところが、
convertView = mLayoutInflater.inflate(R.layout.main_list_row, null);
の箇所で、Resouce NotFound のexceptionが発生してしまった。

main_list_row というxmlファイルはきっちりと存在しているのに!!

ふと、思いついて、
convertView = mLayoutInflater.inflate(jp.hoge.Test01.R.layout.main_list_row, null);
としてみたら、あっさり動作した。


こんなエラーに見舞われたらたまらんなあ・・・
絶対原因わからん。




=================================================================
ところが・・・

これではダメだった。
あれからまた同じ現象が発生するようになってしまった。

さんざんあれこれやってみたところ、どうやら、layout.main_list_row のIDと実際のXMLファイルが、Eclipseの内部的に正しく結びついていないのではないか、という結論に達した。

以下のように、main_list_row.xml に、無理矢理ヘンなIDを指定してビルドし直したら、例外が発生せずに全てのリソースが正しく取得できるようになった。
追加したヘンなIDは、正常動作するようになった後に削除しておくこと。


上で対策として行った、
jp.hoge.Test01.R.layout.main_list_row
というのは、やっぱり不要で、単に
R.layout.main_list_row
で良い。



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/hoge"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<ImageView
android:id="@+id/image"
android:layout_width="60dip"
android:layout_height="60dip"
/>
<TextView
android:id="@+id/text"
android:choiceMode="singleChoice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>



それにしてもうんざりするなあ。
こんなくだらないことに時間を取られるのは非常に腹立たしい。
スポンサーサイト
コメント
コメントの投稿
管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。