MervynLammm 2015-12-29 15:07 采纳率: 50%
浏览 1836
已采纳

关于安卓button的findviewbyid导致程序报错,和adapter的使用错误

package com.example.mp3test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.provider.MediaStore;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SeekBar;
import android.widget.SimpleAdapter;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
import android.widget.TabWidget;

public class MainActivity extends Activity {
private TabHost tabHost;
private TabSpec specSongs;
private TabSpec specArtists;
private TabSpec specAlbums;
private TabSpec specPlaylist;

private MediaPlayer player;
private SeekBar audioSeekbar;

private Button playBtn;
private Button pauseBtn;
private Button nextBtn;
private Button preBtn;
private Button stopBtn;

private ListView songsList;
private ListView artistsList;
private ListView albumsList;
private ListView playList;

private List<Map<String,Object>> dataList;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tabHost = (TabHost) findViewById(android.R.id.tabhost);
    tabHost.setup();
    audioSeekbar = (SeekBar) findViewById(R.id.seekBar1);

// playBtn = (Button) findViewById(R.id.imagebstart);
// nextBtn = (Button) findViewById(R.id.imagebnext);
// preBtn = (Button) findViewById(R.id.imagebpre);
// stopBtn = (Button) findViewById(R.id.imagebstop);
songsList = (ListView) findViewById(R.id.listSongs);
artistsList = (ListView) findViewById(R.id.listArtists);
albumsList = (ListView) findViewById(R.id.listAlbums);
playList = (ListView) findViewById(R.id.listPlaylist);
dataList = new ArrayList>();
//init();
//set_tab_style();
add_tabs();
//set_Adapter();
}

private void init(){
    tabHost = (TabHost) findViewById(android.R.id.tabhost);
    audioSeekbar = (SeekBar) findViewById(R.id.seekBar1);
    playBtn = (Button) findViewById(R.id.imagebstart);
    nextBtn = (Button) findViewById(R.id.imagebnext);
    preBtn = (Button) findViewById(R.id.imagebpre);
    stopBtn = (Button) findViewById(R.id.imagebstop);
    songsList = (ListView) findViewById(R.id.listSongs);
    artistsList = (ListView) findViewById(R.id.listArtists);
    albumsList = (ListView) findViewById(R.id.listAlbums);
    playList = (ListView) findViewById(R.id.listPlaylist);
    dataList = new ArrayList<Map<String,Object>>();
}

private void set_Adapter(){
    setListAdpter(songsList, getMp3Infos("songs"));
    setListAdpter(artistsList, getMp3Infos("artists"));
    setListAdpter(albumsList, getMp3Infos("albums"));
    setListAdpter(playList, getMp3Infos("playlist"));
}

private void set_tab_style(){
    LinearLayout layout = (LinearLayout)tabHost.getChildAt(0);
    TabWidget tw = (TabWidget)layout.getChildAt(0);
}

private void add_tabs(){
    specSongs = tabHost.newTabSpec("Tab 1");
    specSongs.setContent(R.id.tabSongs);
    specSongs.setIndicator("Songs");
    tabHost.addTab(specSongs);

    specArtists = tabHost.newTabSpec("Tab 2");
    specArtists.setContent(R.id.tabArtists);
    specArtists.setIndicator("Artists");
    tabHost.addTab(specArtists);

    specAlbums = tabHost.newTabSpec("Tab 3");
    specAlbums.setContent(R.id.tabAlbums);
    specAlbums.setIndicator("Albums");
    tabHost.addTab(specAlbums);

    specPlaylist = tabHost.newTabSpec("Tab 4");
    specPlaylist.setContent(R.id.tabPlaylist);
    specPlaylist.setIndicator("Playlist");
    tabHost.addTab(specPlaylist);
}

public List<Mp3Info> getMp3Infos(String c){
    Cursor cursor = null;
    if(c.equals("songs")){
        cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
    }
    else if(c.equals("artists")){
        cursor = getContentResolver().query(MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI,
                null, null, null, MediaStore.Audio.Artists.DEFAULT_SORT_ORDER);
    }
    else if(c.equals("albums")){
        cursor = getContentResolver().query(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
                null, null, null, MediaStore.Audio.Albums.DEFAULT_SORT_ORDER);
    }
    else if(c.equals("playlist")){
        cursor = getContentResolver().query(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,
                null, null, null, MediaStore.Audio.Playlists.DEFAULT_SORT_ORDER);
    }
    List<Mp3Info> mp3Infos = new ArrayList<Mp3Info>();
    for(int i = 0; i < cursor.getCount(); ++i){
        Mp3Info mp3info = new Mp3Info();
        cursor.moveToNext();
        String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
        String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
        String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
        long duration = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));
        int isMusic = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.IS_MUSIC));
        if(isMusic != 0){
            mp3info.title = title;
            mp3info.album = album;
            mp3info.artist = artist;
            mp3info.duration = duration;
            mp3Infos.add(mp3info);
        }
    }
    return mp3Infos;
}

public void setListAdpter(ListView mMusiclist, List<Mp3Info> mp3Infos) {
    for (Iterator iterator = mp3Infos.iterator(); iterator.hasNext();) {
        Mp3Info mp3Info = (Mp3Info) iterator.next();
        HashMap<String, Object> map = new HashMap<String, Object>();
        map.put("title", mp3Info.getTitle());
        map.put("Artist", mp3Info.getArtist());
        map.put("pic", R.drawable.music);
        dataList.add(map);
    }
    SimpleAdapter mAdapter = new SimpleAdapter(this, dataList,
            R.layout.item, new String[] { "title", "Artist", "pic" },
            new int[] {R.id.itemsongs, R.id.itemArtists, R.id.itempic });
    mMusiclist.setAdapter(mAdapter);      
}  

public class Mp3Info{
    private String title;
    private String album;
    private String artist;
    private long duration;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getAlbum() {
        return album;
    }

    public void setAlbum(String album) {
        this.album = album;
    }

    public String getArtist() {
        return artist;
    }

    public void setArtist(String artist) {
        this.artist = artist;
    }

    public long getDuration() {
        return duration;
    }

    public void setDuration(long duration) {
        this.duration = duration;
    }
}

}


以上代码,谢谢

  • 写回答

1条回答 默认 最新

  • devmiao 2015-12-29 15:56
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Stata 面板数据模型选择
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用