Android 向ImageView添加额外信息
所以我想这个问题不仅仅是关于Android 向ImageView添加额外信息,android,imageview,Android,Imageview,所以我想这个问题不仅仅是关于ImageView,而是关于任何控件 在我的应用程序中,我列出文件夹中的所有.mp3文件,并为每个文件创建一个ImageView,并将其添加到我的表单中。这些imageview基本上只是图标,单击这些图标将触发正在播放的声音片段 要记住导致创建ImageView的.mp3文件名,以便我可以在ImageView的OnClick()处理程序中再次获取该文件,最好的方法是什么 以下是ImageView的创建方式: File[] files = myPath.listFile
ImageView
,而是关于任何控件
在我的应用程序中,我列出文件夹中的所有.mp3文件,并为每个文件创建一个ImageView
,并将其添加到我的表单中。这些imageview
基本上只是图标,单击这些图标将触发正在播放的声音片段
要记住导致创建ImageView
的.mp3文件名,以便我可以在ImageView
的OnClick()
处理程序中再次获取该文件,最好的方法是什么
以下是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);
}
有什么建议吗?谢谢。您可以使用接受对象的
.setTag()?
方法
试试这个:
imageView.setTag(file);
链接到文档:您可以使用接受对象的
.setTag()?
方法
试试这个:
imageView.setTag(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());
}
});
}
为什么不仅仅是这个?只需将
文件
变量声明为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());
}
});
}
不使用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);
}
不使用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);
}
美好的我不知道你可以在
for
语句中使用最后一个修饰符。这是一个完美而优雅的解决方案,适合我在这里尝试实现的目标,但我接受.setTag()答案,因为它更通用。谢谢你。我学到了一些东西,很好!我不知道你可以在for
语句中使用最后一个修饰符。这是一个完美而优雅的解决方案,适合我在这里尝试实现的目标,但我接受.setTag()答案,因为它更通用。谢谢你。我学到了一些东西。