나는 한 번 클릭하면 앨범 목록을 가져 오는 아티스트의 목록을 만들었습니다. 일단 앨범을 클릭하면 노래 목록이 나옵니다.하나의 활동에서 여러 onItemClick을 사용 중 ... "중복 메소드"오류가 발생했습니다.
불행히도이 활동에는 두 개의 목록 뷰가 생성되므로 두 번째 'onItemClick'메서드는 eclipse에서 'duplicate'로 플래그가 지정됩니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까? 당신의 도움에 대한
package music.library;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class MusicLibrary extends Activity implements OnItemClickListener {
Cursor cursor;
@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String[] columns = {
MediaStore.Audio.Artists._ID,
MediaStore.Audio.Artists.ARTIST };
cursor = managedQuery(MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI,
columns, null, null, null);
ListView listView = (ListView) findViewById(R.id.listView);
listView.setOnItemClickListener(this);
String[] displayFields = new String[] { MediaStore.Audio.Artists.ARTIST };
int[] displayViews = new int[] { R.id.artistItem };
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.artist_item, cursor, displayFields, displayViews);
listView.setAdapter(adapter);
}
@SuppressWarnings("deprecation")
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
if (cursor.moveToPosition(position)) {
String[] columns = {
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.ALBUM,
};
String where = android.provider.MediaStore.Audio.Media.ARTIST
+ "=?";
String whereVal[] = { cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Albums.ARTIST)) };
String orderBy = android.provider.MediaStore.Audio.Media._ID;
cursor = managedQuery(
MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, columns,
where, whereVal, orderBy);
ListView listView = (ListView) findViewById(R.id.listView);
String[] displayFields = new String[] { MediaStore.Audio.Media.ALBUM };
int[] displayViews = new int[] { R.id.albumItem };
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.album_item, cursor, displayFields, displayViews);
listView.setAdapter(adapter);
}
}
@SuppressWarnings("deprecation")
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
if (cursor.moveToPosition(position)) {
String[] columns = {
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DISPLAY_NAME,
};
String where = MediaStore.Audio.Media.ALBUM
+ "=?";
String whereVal[] = { cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Albums.ALBUM)) };
String orderBy = MediaStore.Audio.Media._ID;
cursor = managedQuery(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, columns,
where, whereVal, orderBy);
ListView listView = (ListView) findViewById(R.id.listView);
String[] displayFields =
new String[] { MediaStore.Audio.Media.DISPLAY_NAME };
int[] displayViews = new int[] { R.id.songItem };
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.song_item, cursor, displayFields, displayViews);
listView.setAdapter(adapter);
}
}
}
감사 :
다음은 주요 활동 코드입니다.
---- 편집 ----
답장을 보내 주셔서 감사합니다. 모든 답변이 훌륭했지만, 필자는 dymmeh의 답변을 '받아 들인'대답으로 선택했습니다.보기를 여러 가지 활동으로 분리하는 것이 가장 의미가있는 것처럼 보입니다 (이 내용이 내가 원하는 내용이 아니더라도 초기 질문). ,
일등 보여주는 작가 :
package music.library;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class MusicLibrary extends Activity implements OnItemClickListener {
Cursor cursor;
@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String[] columns = {
MediaStore.Audio.Artists._ID,
MediaStore.Audio.Artists.ARTIST
};
cursor = managedQuery(MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI,
columns, null, null, null);
ListView listView = (ListView) findViewById(R.id.listView);
listView.setOnItemClickListener(this);
String[] displayFields = new String[] { MediaStore.Audio.Artists.ARTIST };
int[] displayViews = new int[] { R.id.artistItem };
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.artist_item, cursor, displayFields, displayViews);
listView.setAdapter(adapter); }
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
if (cursor.moveToPosition(position)) {
String where = android.provider.MediaStore.Audio.Media.ARTIST
+ "=?";
String whereVal[] = { cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Albums.ARTIST)) };
Intent intent = new Intent(MusicLibrary.this, AlbumSelection.class);
intent.putExtra("where", where);
intent.putExtra("whereVal", whereVal);
startActivity(intent);
}
}
}
2 등석 보여주는 앨범 :
package music.library;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class AlbumSelection extends Activity implements OnItemClickListener {
Cursor cursor;
@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bundle extras = getIntent().getExtras();
String where = extras.getString("where");
String[] whereVal = extras.getStringArray("whereVal");
String[] columns = {
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.ALBUM,
};
String orderBy = android.provider.MediaStore.Audio.Media._ID;
cursor = managedQuery(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
columns, where, whereVal, orderBy);
ListView listView = (ListView) findViewById(R.id.listView);
listView.setOnItemClickListener(this);
String[] displayFields = new String[] { MediaStore.Audio.Media.ALBUM };
int[] displayViews = new int[] { R.id.albumItem };
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.album_item, cursor, displayFields, displayViews);
listView.setAdapter(adapter); }
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
if (cursor.moveToPosition(position)) {
String where = android.provider.MediaStore.Audio.Media.ALBUM
+ "=?";
String whereVal[] = { cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Albums.ALBUM)) };
Intent intent = new Intent(AlbumSelection.this, SongSelection.class);
intent.putExtra("where", where);
intent.putExtra("whereVal", whereVal);
startActivity(intent);
}
}
}
세 번째 클래스 보여주는 노래 :
을나는 다음을 만들어 결국
package music.library;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class SongSelection extends Activity implements OnItemClickListener {
Cursor cursor;
@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bundle extras = getIntent().getExtras();
String where = extras.getString("where");
String[] whereVal = extras.getStringArray("whereVal");
String[] columns = {
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.MIME_TYPE,
};
String orderBy = android.provider.MediaStore.Audio.Media.TITLE;
cursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
columns, where, whereVal, orderBy);
ListView listView = (ListView) findViewById(R.id.listView);
listView.setOnItemClickListener(this);
String[] displayFields = new String[] { MediaStore.Audio.Media.TITLE };
int[] displayViews = new int[] { R.id.songItem };
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.song_item, cursor, displayFields, displayViews);
listView.setAdapter(adapter); }
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
if (cursor.moveToPosition(position)) {
/*Intent intent = new Intent(AlbumSelection.this, SongSelection.class);
intent.putExtra("ARTIST", artist);
startActivity(intent);
*/
}
}
}
그리고 그것은 다 잘 작동합니다.
모든 답변에 대해 감사합니다. 나는이 코드가 어떻게 정리되고/효율적으로 만들어 졌는지에 대한 의견을 듣고 싶다.
다시 한번 감사드립니다. 한 번만
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
:
내 대답 업데이트, 잘하면 도움이 될 것입니다. – Barak