Android Listview不以片段形式填充sd卡中的歌曲
我正在制作一个应用程序,它可以从sd卡上获取歌曲,然后 在listview中填充。但由于某些原因,它不会填充和显示 空白片段。你能帮忙吗?这可能是什么原因造成的 问题多谢各位 bellasongs.javaAndroid 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;
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);
确保您的thisandroid.R.id.list
id正确,它应该从R.id.yourId
不要在这里导入android.R在这里导入您的项目
检查您的XML布局文件的id或将其粘贴到您的问题中。我认为您的id引用不正确
Bellasongviews = (ListView)rootview.findViewById(android.R.id.list);
确保您的thisandroid.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中的列表视图