Android - 文件名动态列表上的 setOnClickListener()
Android - setOnClickListener() on dynamic list of Filenames
我有一个简单的函数,可以列出特定文件夹的所有文件名 "MP3" 作为 TextViews ..我现在想对它们进行一些进一步的操作,但我不知道如何使用 OnCLickListener 来做到这一点()
public class MainActivity extends AppCompatActivity {
private File root;
private ArrayList<File> fileList = new ArrayList<File>();
private LinearLayout mp3List;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mp3List = (LinearLayout) findViewById(R.id.mp3List);
root = new File(Environment.getExternalStorageDirectory().toString()+"/MP3");
getfile(root);
for (int i = 0; i < fileList.size(); i++) {
final TextView textView = new TextView(this);
textView.setText(fileList.get(i).getName());
textView.setPadding(5, 5, 5, 5);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("MainActivity", " WHAT IS THIS ITEM'S ID?? ");
}
});
System.out.println(fileList.get(i).getName());
mp3List.addView(textView);
}
}
public ArrayList<File> getfile(File dir) {
File listFile[] = dir.listFiles();
if (listFile != null && listFile.length > 0) {
for (int i = 0; i < listFile.length; i++) {
if (listFile[i].isDirectory()) {
fileList.add(listFile[i]);
getfile(listFile[i]);
} else {
if (listFile[i].getName().endsWith(".mp3")) {
fileList.add(listFile[i]);
}
}
}
}
return fileList;
}
}
谁能告诉我,如何获取为文件生成的 TextView 的文件名?
您有一些可能的解决方案:
- 如果您只想获取文件名,请在您的侦听器中执行
textView.getText()
- 您可以使用方法
View#setTag(Object)
, and retrieve this complex object by using View#getTag():Object
. 将复杂对象添加到任何视图
在任何情况下,我正在查看的代码都没有优化,因为 Android 不认为动态创建视图,至少这不是创建列表的正常方法。查看 ListView
或新的等价物 RecyclerView
,两者都允许回收视图并滚动它们。
我有一个简单的函数,可以列出特定文件夹的所有文件名 "MP3" 作为 TextViews ..我现在想对它们进行一些进一步的操作,但我不知道如何使用 OnCLickListener 来做到这一点()
public class MainActivity extends AppCompatActivity {
private File root;
private ArrayList<File> fileList = new ArrayList<File>();
private LinearLayout mp3List;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mp3List = (LinearLayout) findViewById(R.id.mp3List);
root = new File(Environment.getExternalStorageDirectory().toString()+"/MP3");
getfile(root);
for (int i = 0; i < fileList.size(); i++) {
final TextView textView = new TextView(this);
textView.setText(fileList.get(i).getName());
textView.setPadding(5, 5, 5, 5);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("MainActivity", " WHAT IS THIS ITEM'S ID?? ");
}
});
System.out.println(fileList.get(i).getName());
mp3List.addView(textView);
}
}
public ArrayList<File> getfile(File dir) {
File listFile[] = dir.listFiles();
if (listFile != null && listFile.length > 0) {
for (int i = 0; i < listFile.length; i++) {
if (listFile[i].isDirectory()) {
fileList.add(listFile[i]);
getfile(listFile[i]);
} else {
if (listFile[i].getName().endsWith(".mp3")) {
fileList.add(listFile[i]);
}
}
}
}
return fileList;
}
}
谁能告诉我,如何获取为文件生成的 TextView 的文件名?
您有一些可能的解决方案:
- 如果您只想获取文件名,请在您的侦听器中执行
textView.getText()
- 您可以使用方法
View#setTag(Object)
, and retrieve this complex object by usingView#getTag():Object
. 将复杂对象添加到任何视图
在任何情况下,我正在查看的代码都没有优化,因为 Android 不认为动态创建视图,至少这不是创建列表的正常方法。查看 ListView
或新的等价物 RecyclerView
,两者都允许回收视图并滚动它们。