Android - 动态文件名列表上的setOnClickListener()

时间:2015-07-08 18:21:04

标签: android file dynamic mp3 onclicklistener

我有一个简单的函数,它将特定文件夹“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的文件名?

1 个答案:

答案 0 :(得分:0)

您有一些可能的解决方案:

  • 如果您只想获取文件的名称,请在您的听众中textView.getText()
  • 您可以使用方法View#setTag(Object)将复杂对象添加到任何视图,并使用View#getTag():Object检索此复杂对象。

在任何情况下,我所看到的代码都没有优化,因为Android不被认为是动态创建视图,至少这不是创建列表的常规方法。查看ListView或新的等效RecyclerView,两者都允许回收视图并滚动它们。