2

BaseAdapter を拡張するクラスを使用して、レイアウトの gridView を埋めています。gridView の要素の 1 つをクリックすると、クリックしたアイテムの名前を取得したい (名前は R.drawable.name の名前)

だからここに私が書いたものがあります

gridView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                    Intent intent = new Intent(ChoseActivity.this,
                            GameActivity.class);
                    String ab = getResources().getResourceEntryName(arg1.getId());
                    intent.putExtra("AB", ab);
                    startActivity(intent);
}
}

このエラーがあります

02-27 13:46:49.285: E/AndroidRuntime(24862): FATAL EXCEPTION: main
02-27 13:46:49.285: E/AndroidRuntime(24862): android.content.res.Resources$NotFoundException: Unable to find resource ID #0xffffffff
02-27 13:46:49.285: E/AndroidRuntime(24862):    at android.content.res.Resources.getResourceEntryName(Resources.java:1499)
02-27 13:46:49.285: E/AndroidRuntime(24862):    at com.example.kersplatt.ChoseActivity$1.onItemClick(ChoseActivity.java:36)
02-27 13:46:49.285: E/AndroidRuntime(24862):    at android.widget.AdapterView.performItemClick(AdapterView.java:284)
02-27 13:46:49.285: E/AndroidRuntime(24862):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812)

クリックされた画像がリソース内にあるため、理解できません

編集1

アダプターの getView でこれを試しましたが、同じエラーが発生します。

ImageView imageView = new ImageView(mContext);
imageView.setTag(R.drawable.currentimage);
4

5 に答える 5

0
getResources().getResourceEntryName(arg1.getId());

ここではコンテキストを指定していません。になり得る:

this.getResources().getResourceEntryName(arg1.getId());

そんな感じ

于 2013-05-03T19:51:28.583 に答える
0

機能がないgetDrawableIdので、ドローアブルを変更するときに ImageView にタグを設定するなどの操作が必要になります。

アダプター クラスgetview()でタグを imageview オブジェクトに設定し、タグをドローアブルのリソースの ID にします。

imageview.settag(r.drawable.currentimage)

グリッドビューのドローアブル onClick が必要な場合は、タグを取得して、そのタグからドローアブルを取得します。id

int drawableId = (Integer)imageview.getTag();

を使用してドローアブルの名前を取得できます

getResources().getResourceEntryName(int drawableId);
于 2013-02-27T14:05:08.953 に答える
0

私はそれをドットにする方法を探していました。あなたの場合にそれを行う最も簡単な方法は、クリックしたビューのIDを含むarg3を次のように使用することです

String ab = getResources().getResourceEntryName(int()arg3);
于 2014-02-06T11:36:44.937 に答える
0

resources/ drawable フォルダー内の画像が単純arraylist<integer>に次のようなタイプの配列リストを作成する場合、まず最初に、これらの画像をすべて配列リストに追加します。その後、アダプター クラスでその配列リストを使用します (カスタムをインフレートする方法を知っていると仮定します)。レイアウトし、配列リストを使用してそれらすべての画像をグリッドビューに表示します。質問で尋ねるテキストについては、テキストの配列リストも作成します。ここarraylist<Integer>では、リソース/描画可能フォルダーにあるテキスト値を保持するため、タイプはのみになります。 (質問で言うように)または、タイプの独自の配列リストを作成し、arraylist<String>好きなようにそれに文字列(名前)を追加できます。

次に、すべての配列リストに何らかの位置があるか(using method imageview.setId())、レイアウトを膨らませながら画像のIDを設定し、その画像ビューのクリックリスナーでアダプタークラスのIDまたは位置を確認または取得できるため、位置を見つけた後、値を取るだけですテキストの配列リスト(以前に作成済み)内の要素または項目を配置して検索し、ユーザーのクリックイベントが発生したときに配列リストの特定の位置から項目を取得し、その後、好きなように表示または印刷します。質問に関してコードが必要な場合plsは私に知らせて、私の英語について申し訳ありません。

于 2013-05-03T05:18:48.397 に答える
-1

はい、イメージのリソース ID があれば、イメージの名前を取得できます。getResourceEntryName(resourceId) を使用できます

画像パスに ArrayList を使用している場合は、

String name = getResources().getResourceEntryName(ArrayListName.get(arg2));

配列を使用している場合

String name = getResources().getResourceEntryName(Arrayname[arg2]);
于 2014-04-09T08:03:35.827 に答える