Android Listview不以片段形式填充sd卡中的歌曲

Android Listview不以片段形式填充sd卡中的歌曲,android,listview,android-fragments,Android,Listview,Android Fragments,我正在制作一个应用程序,它可以从sd卡上获取歌曲,然后 在listview中填充。但由于某些原因,它不会填充和显示 空白片段。你能帮忙吗?这可能是什么原因造成的 问题多谢各位 bellasongs.java public class BellaSongs extends ListFragment { private ArrayList<ModelBellaSongs> BellaSongList; private ListView Bellasongviews;

我正在制作一个应用程序,它可以从sd卡上获取歌曲,然后 在listview中填充。但由于某些原因,它不会填充和显示 空白片段。你能帮忙吗?这可能是什么原因造成的 问题多谢各位

bellasongs.java

public class BellaSongs extends ListFragment {

    private ArrayList<ModelBellaSongs> BellaSongList;
    private ListView Bellasongviews;
    Context context;

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootview = inflater.inflate(R.layout.bella_songs, container, false);
        Bellasongviews = (ListView)rootview.findViewById(android.R.id.list);

        BellaSongList = new ArrayList<ModelBellaSongs>();
        return rootview;
    }

    public void getBellaSongList() {
        ContentResolver musicResolver = context.getContentResolver();
        Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
        Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);

        if (musicCursor != null && musicCursor.moveToFirst()) {
            int titlecolumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
            int idcolumn = musicCursor.getColumnIndex(MediaStore.Audio.Media._ID);
            int artistcolumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);

            do {
                long thisId = musicCursor.getLong(idcolumn);
                String thistitle = musicCursor.getString(titlecolumn);
                String thisartist = musicCursor.getString(artistcolumn);
                BellaSongList.add(new ModelBellaSongs(thisId, thistitle, thisartist));
            } while (musicCursor.moveToNext());
        }
        getBellaSongList();

        Collections.sort(BellaSongList, new Comparator<ModelBellaSongs>() {
            @Override
            public int compare(ModelBellaSongs a, ModelBellaSongs b) {
                return a.getTitle().compareTo(b.getTitle());
            }
        });

        BellaSongsAdapter bellasongsadapter = new BellaSongsAdapter(getActivity(),BellaSongList);
            Bellasongviews.setAdapter(bellasongsadapter);
    }
}
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">


<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@android:id/list"
    android:layout_gravity="center_vertical"
    android:layout_weight="1" />

 </LinearLayout>
public class BellaSongsAdapter extends BaseAdapter {

    private ArrayList<ModelBellaSongs> bellasongs;
    private LayoutInflater songdetails;

    public BellaSongsAdapter(Context c, ArrayList<ModelBellaSongs>thesongs){
        bellasongs = thesongs;
        songdetails = LayoutInflater.from(c);
    }

    @Override
    public int getCount() {
        return bellasongs.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LinearLayout songLayout=(LinearLayout)songdetails.inflate(R.layout.singlelist_item,parent,false);
        TextView titleview=(TextView)songLayout.findViewById(R.id.text_song_name);
        TextView artistview=(TextView)songLayout.findViewById(R.id.text_artist_name);

        ModelBellaSongs currentsongs = bellasongs.get(position);
        titleview.setText(currentsongs.getTitle());
        artistview.setText(currentsongs.getArtist());
        songLayout.setTag(position);

        return songLayout;
    }
}
public类扩展ListFragment{
私人ArrayList BellaSongList;
私有列表视图;
语境;
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图根视图=充气器。充气(R.layout.bella_歌曲,容器,false);
Bellasongviews=(ListView)rootview.findViewById(android.R.id.list);
BellaSongList=新的ArrayList();
返回rootview;
}
public void getBellaSongList(){
ContentResolver musicResolver=context.getContentResolver();
Uri musicUri=MediaStore.Audio.Media.EXTERNAL\u CONTENT\u Uri;
游标musicCursor=musicSolver.query(musicUri,null,null,null);
if(musicCursor!=null&&musicCursor.moveToFirst()){
int titlecolumn=musicCursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
int ID column=musicCursor.getColumnIndex(MediaStore.Audio.Media.\u ID);
int-artistcolumn=musicCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
做{
long thisId=musicCursor.getLong(idcolumn);
String thisttitle=musicCursor.getString(titlecolumn);
String thisartist=musicCursor.getString(artistcolumn);
添加(新的模式BellaSongs(thisId,thistitle,thisartist));
}while(musicCursor.moveToNext());
}
getSongList();
Collections.sort(BellaSongList,newcomparator(){
@凌驾
公共整数比较(ModelBella歌曲a、ModelBella歌曲b){
返回a.getTitle().compareTo(b.getTitle());
}
});
BellaSongsAdapter BellaSongsAdapter=新的BellaSongsAdapter(getActivity(),BellaSongList);
setAdapter(bellasongsadapter);
}
}
adapter.java

public class BellaSongs extends ListFragment {

    private ArrayList<ModelBellaSongs> BellaSongList;
    private ListView Bellasongviews;
    Context context;

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootview = inflater.inflate(R.layout.bella_songs, container, false);
        Bellasongviews = (ListView)rootview.findViewById(android.R.id.list);

        BellaSongList = new ArrayList<ModelBellaSongs>();
        return rootview;
    }

    public void getBellaSongList() {
        ContentResolver musicResolver = context.getContentResolver();
        Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
        Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);

        if (musicCursor != null && musicCursor.moveToFirst()) {
            int titlecolumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
            int idcolumn = musicCursor.getColumnIndex(MediaStore.Audio.Media._ID);
            int artistcolumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);

            do {
                long thisId = musicCursor.getLong(idcolumn);
                String thistitle = musicCursor.getString(titlecolumn);
                String thisartist = musicCursor.getString(artistcolumn);
                BellaSongList.add(new ModelBellaSongs(thisId, thistitle, thisartist));
            } while (musicCursor.moveToNext());
        }
        getBellaSongList();

        Collections.sort(BellaSongList, new Comparator<ModelBellaSongs>() {
            @Override
            public int compare(ModelBellaSongs a, ModelBellaSongs b) {
                return a.getTitle().compareTo(b.getTitle());
            }
        });

        BellaSongsAdapter bellasongsadapter = new BellaSongsAdapter(getActivity(),BellaSongList);
            Bellasongviews.setAdapter(bellasongsadapter);
    }
}
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">


<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@android:id/list"
    android:layout_gravity="center_vertical"
    android:layout_weight="1" />

 </LinearLayout>
public class BellaSongsAdapter extends BaseAdapter {

    private ArrayList<ModelBellaSongs> bellasongs;
    private LayoutInflater songdetails;

    public BellaSongsAdapter(Context c, ArrayList<ModelBellaSongs>thesongs){
        bellasongs = thesongs;
        songdetails = LayoutInflater.from(c);
    }

    @Override
    public int getCount() {
        return bellasongs.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LinearLayout songLayout=(LinearLayout)songdetails.inflate(R.layout.singlelist_item,parent,false);
        TextView titleview=(TextView)songLayout.findViewById(R.id.text_song_name);
        TextView artistview=(TextView)songLayout.findViewById(R.id.text_artist_name);

        ModelBellaSongs currentsongs = bellasongs.get(position);
        titleview.setText(currentsongs.getTitle());
        artistview.setText(currentsongs.getArtist());
        songLayout.setTag(position);

        return songLayout;
    }
}

bellasongsadapter.java

public class BellaSongs extends ListFragment {

    private ArrayList<ModelBellaSongs> BellaSongList;
    private ListView Bellasongviews;
    Context context;

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootview = inflater.inflate(R.layout.bella_songs, container, false);
        Bellasongviews = (ListView)rootview.findViewById(android.R.id.list);

        BellaSongList = new ArrayList<ModelBellaSongs>();
        return rootview;
    }

    public void getBellaSongList() {
        ContentResolver musicResolver = context.getContentResolver();
        Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
        Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);

        if (musicCursor != null && musicCursor.moveToFirst()) {
            int titlecolumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
            int idcolumn = musicCursor.getColumnIndex(MediaStore.Audio.Media._ID);
            int artistcolumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);

            do {
                long thisId = musicCursor.getLong(idcolumn);
                String thistitle = musicCursor.getString(titlecolumn);
                String thisartist = musicCursor.getString(artistcolumn);
                BellaSongList.add(new ModelBellaSongs(thisId, thistitle, thisartist));
            } while (musicCursor.moveToNext());
        }
        getBellaSongList();

        Collections.sort(BellaSongList, new Comparator<ModelBellaSongs>() {
            @Override
            public int compare(ModelBellaSongs a, ModelBellaSongs b) {
                return a.getTitle().compareTo(b.getTitle());
            }
        });

        BellaSongsAdapter bellasongsadapter = new BellaSongsAdapter(getActivity(),BellaSongList);
            Bellasongviews.setAdapter(bellasongsadapter);
    }
}
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">


<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@android:id/list"
    android:layout_gravity="center_vertical"
    android:layout_weight="1" />

 </LinearLayout>
public class BellaSongsAdapter extends BaseAdapter {

    private ArrayList<ModelBellaSongs> bellasongs;
    private LayoutInflater songdetails;

    public BellaSongsAdapter(Context c, ArrayList<ModelBellaSongs>thesongs){
        bellasongs = thesongs;
        songdetails = LayoutInflater.from(c);
    }

    @Override
    public int getCount() {
        return bellasongs.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LinearLayout songLayout=(LinearLayout)songdetails.inflate(R.layout.singlelist_item,parent,false);
        TextView titleview=(TextView)songLayout.findViewById(R.id.text_song_name);
        TextView artistview=(TextView)songLayout.findViewById(R.id.text_artist_name);

        ModelBellaSongs currentsongs = bellasongs.get(position);
        titleview.setText(currentsongs.getTitle());
        artistview.setText(currentsongs.getArtist());
        songLayout.setTag(position);

        return songLayout;
    }
}
公共类BellaSongsAdapter扩展BaseAdapter{
私人ArrayList bellasongs;
私人停车场详细信息;
公共BellaSongsAdapter(上下文c,数组列表歌曲){
贝拉歌曲=歌曲;
songdetails=Layoutiner.from(c);
}
@凌驾
public int getCount(){
返回bellasongs.size();
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LinearLayout songLayout=(LinearLayout)songdetails.inflate(R.layout.singlelist_项,父项,false);
TextView titleview=(TextView)songLayout.findViewById(R.id.text\u song\u name);
TextView artistview=(TextView)songLayout.findViewById(R.id.text\u artist\u name);
ModelBellaSongs currentsongs=bellasongs.get(位置);
titleview.setText(currentsongs.getTitle());
artistview.setText(currentsongs.getArtister());
songLayout.setTag(位置);
返回布局;
}
}

我认为您的id引用不正确

Bellasongviews = (ListView)rootview.findViewById(android.R.id.list);
确保您的this
android.R.id.list
id正确,它应该从
R.id.yourId

不要在这里导入android.R在这里导入您的项目


检查您的XML布局文件的id或将其粘贴到您的问题中。

我认为您的id引用不正确

Bellasongviews = (ListView)rootview.findViewById(android.R.id.list);
确保您的this
android.R.id.list
id正确,它应该从
R.id.yourId

不要在这里导入android.R在这里导入您的项目


检查XML布局文件的id或将其粘贴到您的问题中。

查看您的代码,我看到了getBellaSingList()方法。该方法检索数据,甚至重复调用自身,但它不会在
onCreateView()中调用。
。因此,从技术上讲,您不是在填充数据集。您需要在初始化视图时调用它-请验证此方法的逻辑。

查看您的代码,我看到了getBellaSingList()方法。此方法正在检索数据,甚至重复调用自己,但它不会在
onCreateView()中调用。
。因此,从技术上讲,您不是在填充数据集。您需要在初始化视图时调用它-请验证此方法的逻辑。

返回的游标不是空的吗?请附上BellaSongsAdapter。class@YuriiTsap这里我添加了适配器类。是否正确。返回的游标不为空?请附上BellaSongsAdapter。class@YuriiTsap这里我添加了适配器类。是否正确。之前我使用了R.id.customid,但在运行时它引发了一个异常,即id应该包含在R.id.customid之后的android。我添加了xml。我在songs.java中将id从
android.R.id.list
更改为
R.id.list
,但最终在xml中从
android:id/list
更改为
@+id/list
,但在运行时它仍然没有填充listview。之前我使用了R.id.customid,但在运行时它抛出了一个异常,即id应该包括android在R.id.customid之后,我添加了xml。我在songs.java中将id从
android.R.id.list
更改为
R.id.list
,但最终在xml中从
android:id/list
更改为
@+id/list
,但它仍然没有填充ru中的列表视图