먼저 소스를 첨가 하겠습니다.

filelist.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="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();
       }
     }
   );
  }
}


1.위와 같은 소스입니다. 본 소스에서 데이터량이 데이터를 일일히 적는 것이 아니라 xml형태로 파싱을 받거나
폴더를 검색 하여 데이터를 가져올 수 있을까요?

2.Data와 title의 filelistitem.xml에서 제공하는 폰트크기를 다르게 만들 수 있을지 ..

3.리스트 클릭 시 관련 html을 호출 할 수 있을지 궁금합니다.