Требуется помощь Android в представлении адаптера для установки размера текста - PullRequest
0 голосов
/ 04 апреля 2011

Я занимаюсь разработкой мультимедийного проигрывателя Android.Я новичок в Android.Я использую следующий код, чтобы показать всю музыку из результата запроса.Я хочу каждую песню один раз, но она показывает одну песню более одного раза и игнорирует многие другие, если я устанавливаю размер текста в представлении адаптера, как в следующем коде.Как я могу установить размер текста в представлении адаптера и избежать этой проблемы?

Спасибо

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 long getItemId(int position) {
              return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
              System.gc();
              TextView tv = new TextView(mContext.getApplicationContext());
              tv.setTextSize(25);                     //THE PROBLEM IS HERE
              String id = null;
              if (convertView == null) {
                    music_column_index = musicCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME);
                    musicCursor.moveToPosition(position);
                    id = musicCursor.getString(music_column_index);
                    music_column_index = musicCursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID);
                    musicCursor.moveToPosition(position);
                    String artist = musicCursor.getString(music_column_index);
                    id += "Artist:" + artist;
                    tv.setText(id);
              } else
                    tv = (TextView) convertView;
              return tv;
        }
  }

Ответы [ 2 ]

0 голосов
/ 24 мая 2011

Я решил это с помощью SimpleCursorAdapter, как показано ниже. Это встроенный адаптер, который действительно умный. Эта ссылка мне очень помогла

И вы никогда не должны устанавливать android: layout_height = "wrap_content" просмотра списка. Это вызывает повторяющееся вхождение элементов списка.

ListAdapter adapter = new SimpleCursorAdapter(this,
            // Use a template that displays a text view
            R.layout.list_item,
            // Give the cursor to the list adatper
            musicCursor,
            // Map the NAME column in the people database to...
            new String[] { MediaStore.Audio.Media.TITLE,
            MediaStore.Audio.Media.ARTIST },
            // The "text1" view defined in the XML template
            new int[] { R.id.music_title, R.id.music_artist });
    setListAdapter(adapter);
0 голосов
/ 06 апреля 2011

Возможно, потому что вы пишете один и тот же код в инструкции try {} и в то время как? ))

Я имею в виду эти строки:

path.add(musicCursor.getString(musicCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA)));
            title.add(musicCursor.getString(musicCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE)));
            artist.add(musicCursor.getString(musicCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST)));
            album.add(musicCursor.getString(musicCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM)));
            year.add(musicCursor.getString(musicCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.YEAR)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...