package com.example.portablemusicstudio;
import java.io.File;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.os.Bundle;
import android.os.Environment;
public class FileListActivity extends Activity {
// Debugging
private static final String TAG = "FileListActivity";
private static final boolean D = true;
//ListView 선언
ListView filelist;
// 데이터를 연결할 Adapter
DataAdapter adapter;
// 데이터를 담을 자료구조
ArrayList<CData> alist;
//file경로
public static final String STRSAVEPATH = Environment.
getExternalStorageDirectory()+"/3D ensemble studio/record_Drum/";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Setup the window
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.file_list);
//
//sdcard에 특정 위치에 파일 이름을 텍스트로 리스트뷰에 뿌리기
//
//리스트 뷰 정의
filelist = (ListView)findViewById(android.R.id.list);
// 객체를 생성합니다
alist = new ArrayList<CData>();
// 데이터를 받기위해 데이터어댑터 객체 선언
adapter = new DataAdapter(this, alist);
//리스트를 아답터에 셋팅하여 화면에 뿌리기
try{
File fp = new File(STRSAVEPATH);
//해당 경로를 설정 후 저장된 파일 배열로 불러오기
File[] listFiles = fp.listFiles();
for(int i=0; i< listFiles.length; i++){
if(!listFiles[i].isHidden()&&listFiles[i].isFile()){
adapter.add(new CData(getApplicationContext(), listFiles[i].getName(), 0, R.drawable.ic_launcher));
System.out.println(listFiles[i].getName());
}
}
} catch( Exception e ){
return;
}//end catch()
////////////////여기서 죽음
Log.d(TAG, "---------------------------- 죽음선 ---------------------------");
filelist.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
private class DataAdapter extends ArrayAdapter<CData> {
// 레이아웃 XML을 읽어들이기 위한 객체
private LayoutInflater mInflater;
public DataAdapter(Context context, ArrayList<CData> object) {
// 상위 클래스의 초기화 과정
// context, 0, 자료구조
super(context, 0, object);
mInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
// 보여지는 스타일을 자신이 만든 xml로 보이기 위한 구문
@Override
public View getView(int position, View v, ViewGroup parent) {
View view = null;
// 현재 리스트의 하나의 항목에 보일 컨트롤 얻기
if (v == null) {
// XML 레이아웃을 직접 읽어서 리스트뷰에 넣음
view = mInflater.inflate(R.layout.myitem, null);
} else {
view = v;
}
// 자료를 받는다.
final CData data = this.getItem(position);
if (data != null) {
// 화면 출력
TextView tv = (TextView) view.findViewById(R.id.textView1);
TextView tv2 = (TextView) view.findViewById(R.id.textView2);
// 텍스트뷰1에 getLabel()을 출력 즉 첫번째 인수값
tv.setText(data.getLabel());
tv.setTextSize(30);
tv.setTextColor(Color.BLACK);
// 텍스트뷰2에 getData()을 출력 즉 두번째 인수값
tv2.setTextSize(0);
ImageView iv = (ImageView) view.findViewById(R.id.imageView1);
//System.out.println(temp_position);
// 이미지뷰에 뿌려질 해당 이미지값을 연결 즉 세번째 인수값
iv.setImageResource(data.getData2());
}
return view;
}
}
// CData안에 받은 값을 직접 할당
class CData {
private String m_szLabel;
private int m_szData;
private int m_szData2;
public CData(Context context, String p_szLabel, int p_szDataFile,
int p_szData2) {
m_szLabel = p_szLabel;
m_szData = p_szDataFile;
m_szData2 = p_szData2;
}
public String getLabel() {
return m_szLabel;
}
public int getData() {
return m_szData;
}
public int getData2() {
return m_szData2;
}
}
}
자꾸
////////////////여기서 죽음
Log.d(TAG, "---------------------------- 죽음선 ---------------------------");
filelist.setAdapter(adapter); <-이놈때문에 죽는데 이유를 모르겠네요ㅠㅠ
도와주세요
로그켓 에러는 첫 댓글에 달겠습니다