안드로이드 개발 질문/답변
(글 수 45,052)
public class addlist extends ListActivity { ListView mList; Cursor mCursor; int music_column; int count; MediaPlayer mp; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); init_music(); } private void init_music(){ System.gc(); String[] proj = { MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.DISPLAY_NAME }; mCursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, proj, null, null, null); count = mCursor.getCount(); mList = getListView(); mList.setAdapter(new MusicAdapter(getApplication())); mList.setOnItemClickListener(clickMusic); mp = new MediaPlayer(); } private OnItemClickListener clickMusic = new OnItemClickListener() { public void onItemClick(AdapterView parent, View v, int position, long id){ System.gc(); music_column = mCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA); mCursor.moveToPosition(position); String filename = mCursor.getString(music_column); } }; public class MusicAdapter extends BaseAdapter { private Context mContext; public MusicAdapter(Context c){ mContext = c; } public int getCount(){ return count; } public Object getItem(int position){ return position; } public View getView(int position, View convertView, ViewGroup parent){ System.gc(); CheckBox cb = (CheckBox)findViewById(R.id.check); TextView tv = new TextView(mContext.getApplicationContext()); String id = null; if(convertView == null){ music_column = mCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME); mCursor.moveToPosition(position); id = mCursor.getString(music_column); tv.setText(id); } else tv = (TextView)convertView; return tv; } public long getItemId(int position) { // TODO Auto-generated method stub return 0; } } } xml 소스 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="50px" android:layout_height="50px"> <TextView android:layout_height="wrap_content" android:id="@+id/song_item_layout" android:layout_width="10px" android:textSize="15px" /> <CheckBox android:id="@+id/check" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>소스는 위와 같고요
mp3파일 하나마다 옆에 checkbox를 넣어주려고 합니다
그런데 리스트에 노래 제목은 나오는데 checkbox는 안나오네요....;;;
해결 방법좀 부탁드립니다ㅠ
2010.03.05 03:19:00
전체 레이아웃 사이즈가 너무 작아서 그렇습니다.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <CheckBox android:id="@+id/check" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/song_item_layout" android:layout_toLeftOf="@id/check" android:textSize="15px" /> </RelativeLayout>
이렇게 한번 해보세요
코드에서 궁금한점 있으시면 쪽지남기세요 ^^
2010.03.05 18:29:07
에고... 대충봤었다가 놓친게 있네요...
문제의 제일큰 원인은 layout 설정한 xml파일을 아예 사용하지 않고
따로 TextView만 만들어서 쓰고있습니다.
한마디로 xml파일에 아무것도 없어도 파일이름이 뜰껍니다...
list안에 설정한 layout을 넣고 layout에 있는 TextView영역을
TextView tv=(TextView)findViewById(R.id.~~~) 이런식으로 불러와서
tv.setText(~~~~) 로 파일이름들을 넣으면 됩니다.
리스트에 layout을 넣는방법은 글로 설명하기가 힘들어서.... 다른분이 올리셨던건데
http://www.androidpub.com/91099
여기에 있는 소스파일을 참고하시면 될듯합니다.
android:orientation=
"vertical"를 horizontal로 바꾸셔야 할듯 하네용.