<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:visibility="visible"
>
<ListView
android:id="@+id/listViewFile"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
</ListView>
</LinearLayout>
</LinearLayout>
파일명은 filelistitem.xml 입니다.
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@+id/textViewFile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:textSize="12dp"
android:textStyle="bold"
android:text="" />
</LinearLayout>
파일명은 MusicFile.java 입니다.
public class MusicFile {
String data, title;
public MusicFile(String _data, String _title) {
data = _data;
title = _title;
}
public String getData() {
return data;
}
public String getTitle() {
return title;
}
}
파일명은 MusicFileAdapter.java 입니다.
public class MusicFileAdapter extends ArrayAdapter<MusicFile> {
Context context;
int resource;
ArrayList<MusicFile> items;
public MusicFileAdapter(Context _context, int _resource, List<MusicFile> _items) {
super(_context, _resource, _items);
context = _context;
resource = _resource;
items = (ArrayList<MusicFile>)_items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LinearLayout ll;
LayoutInflater layoutInflater;
String str;
TextView textViewContent;
if (convertView == null) {
ll = new LinearLayout(context);
layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layoutInflater.inflate(resource, ll, true);
} else {
ll = (LinearLayout)convertView;
}
textViewContent = (TextView)ll.findViewById(R.id.textViewFile);
str = items.get(position).getData()+"\n"+items.get(position).getTitle();
textViewContent.setText(str);
return ll;
}
public int getCount() {
return items.size();
}
}
파일명은 MusicFileListActivity.java 입니다.
public class MusicFileListActivity extends Activity {
ArrayList<MusicFile> musicFileList;
ListView musicFileListView;
MusicFileAdapter musicFileAdapter;
String data, title;
MusicFile[] content;
MusicFile musicFile;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.filelist);
// 뷰 바인딩
musicFileListView = (ListView)findViewById(R.id.listViewFile);
musicFileList = new ArrayList<MusicFile>();
musicFileAdapter = new MusicFileAdapter(this, R.layout.filelistitem, musicFileList);
musicFileListView.setAdapter(musicFileAdapter);
// 데이터 생성 (샘플로 두개만 생성했음)
data = "/sdcard/test1.mp3";
title = "test music 1";
musicFile = new MusicFile(data, title);
musicFileList.add(musicFile);
data = "/sdcard/test2.mp3";
title = "test music 2";
musicFile = new MusicFile(data, title);
musicFileList.add(musicFile);
// 리스트 아이템 클릭 이벤트
musicFileListView.setOnItemClickListener(
new OnItemClickListener() {
public void onItemClick(AdapterView av, View v, int index, long arg3) {
Uri uri;
Intent result;
data = musicFileList.get(index).getData();
title = musicFileList.get(index).getTitle();
uri = Uri.parse("content://provider/"+index);
result = new Intent(null, uri);
result.putExtra("INDEX", index);
result.putExtra("PATH", data);
result.putExtra("TITLE", title);
setResult(RESULT_OK, result);
finish();
}
}
);
}
}