0

したがって、この質問は単に関連するものではなくImageView、実際にはすべてのコントロールに関連していると思います。

私のアプリでは、フォルダー内のすべての .mp3 ファイルをリストImageViewし、フォームに追加されるそれぞれのファイルを作成しています。これらImageViewsは基本的に単なるアイコンであり、クリックすると再生中のサウンド クリップがトリガーされます。

のハンドラーでImageViewそのファイルを再び取得できるように、作成された.mp3のファイル名を覚える最良の方法は何ですか?OnClick()ImageView

ImageView の作成方法は次のとおりです。

File[] files = myPath.listFiles(new FilenameFilter() {
    public boolean accept(File dir, String name) {
        return name.toLowerCase().endsWith(".mp3");
    }
});
for (File file : files)
{
    ImageView imageView = new ImageView(this);
    imageView.setImageResource(R.drawable.sound_icon);
    imageView.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view)
        {
            // Here I would like to reference file.getAbsolutePath() which
            // I obviously can't so I need to find some way of "remembering"
            // it for this particular ImageView
        }
    });
    myLayout.addView(imageView);
}

助言がありますか?ありがとう。

4

3 に答える 3

4

.setTag()?オブジェクトを受け取るメソッドを使用できます。

これを試して:

 imageView.setTag(file);

ドキュメントへのリンク: http://developer.android.com/reference/android/view/View.html#setTag%28int,%20java.lang.Object%29

于 2013-09-17T05:50:24.890 に答える
1

なぜこれだけではないのですか?file変数を として宣言するだけfinalで、 からこれにアクセスできるようになりますOnClickListener

for (final File file : files)
{
    ImageView imageView = new ImageView(this);
    imageView.setImageResource(R.drawable.sound_icon);
    imageView.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view)
        {
            System.out.println(file.getAbsolutePath());
        }
    });
}
于 2013-09-17T05:55:51.170 に答える
0

このように setTag() なしでも実行できます

for (File file : files)
{
    final File myFile = file;
    ImageView imageView = new ImageView(this);
    imageView.setImageResource(R.drawable.sound_icon);
    imageView.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view)
        {
             myFile.getgetAbsolutePath();

            // Here I would like to reference file.getAbsolutePath() which
            // I obviously can't so I need to find some way of "remembering"
            // it for this particular ImageView
        }
    });
    myLayout.addView(imageView);
}
于 2013-09-17T05:57:47.043 に答える