Android recyclerView无适配器连接,跳过布局

Android recyclerView无适配器连接,跳过布局,android,android-fragments,android-recyclerview,android-adapter,android-tabs,Android,Android Fragments,Android Recyclerview,Android Adapter,Android Tabs,我正在tabLayout中创建列表视图。当我在其中运行应用程序时,它说没有适配器连接,跳过布局,我在emulator中看不到列表;它看起来是空白的。请帮帮我。我在网上尝试了几乎所有的答案,但都做不到。除了屏幕上的列表,我可以看到所有其他的东西 E/RecyclerView:未连接适配器;跳过布局。 01-02 05:53:38.841 19262-19262/com.example.murarilal.musicmania E/RecyclerView:未连接适配器;跳过布局01-02 05:5

我正在tabLayout中创建列表视图。当我在其中运行应用程序时,它说没有适配器连接,跳过布局,我在emulator中看不到列表;它看起来是空白的。请帮帮我。我在网上尝试了几乎所有的答案,但都做不到。除了屏幕上的列表,我可以看到所有其他的东西

E/RecyclerView:未连接适配器;跳过布局。 01-02 05:53:38.841 19262-19262/com.example.murarilal.musicmania E/RecyclerView:未连接适配器;跳过布局01-02 05:53:38.842 19262-19262/com.example.murarilal.musicmania 我/编舞:跳过了32帧!应用程序可能也在运行 在它的主线上做了很多工作。01-02 05:53:38.923 19262-19278/com.example.murarilal.musicmania E/EGL_仿真:tid 19278:eglSurfaceAttrib(1227):错误0x3009(EGL\u错误匹配)01-02 05:53:38.923 19262-19278/com.example.murarilal.musicmania W/OpenGLRenderer:未能在曲面上设置EGL_交换_行为 0x7632b4a689c0,错误=EGL_坏_匹配01-02 05:53:38.939 19262-19278/com.example.murarilal.musicmania D/EGL_仿真: eglMakeCurrent:0x7632b4a493c0:ver 2 0(tinfo 0x7632b4a0c6a0)

主要活动:

public class SongsTab extends Fragment {

    private ArrayList<songInfo> songs = new ArrayList<songInfo>();
    RecyclerView recyclerView;
    SeekBar seekBar;
    songAdapter songAdapter1;
    MediaPlayer mediaPlayer;
    private Handler myHandler = new Handler();


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.songs, container, false);
        recyclerView = (RecyclerView)v.findViewById(R.id.recyclerView);
        seekBar = (SeekBar)v.findViewById(R.id.seekBar);
        songAdapter1 = new songAdapter(songs, getActivity());
        recyclerView.setAdapter(songAdapter1);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
        DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(),
                linearLayoutManager.getOrientation());
        recyclerView.setLayoutManager(linearLayoutManager);
        recyclerView.addItemDecoration(dividerItemDecoration);


        songAdapter1.setOnitemClickListener(new songAdapter.OnitemClickListener() {
            @Override
            public void onItemclick(songAdapter.ViewHolder holder, View v, final songInfo obj, int position) {
                if (mediaPlayer.isPlaying()) {
                    mediaPlayer.stop();
                    mediaPlayer.reset();
                    mediaPlayer.release();
                    mediaPlayer = null;

                } else {

                    Runnable runnable = new Runnable() {
                        @Override
                        public void run() {
                            try {
                                mediaPlayer = new MediaPlayer();
                                mediaPlayer.setDataSource(obj.getSongPath());
                                mediaPlayer.prepareAsync();
                                mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                                    @Override
                                    public void onPrepared(MediaPlayer mp) {
                                        mp.start();
                                        seekBar.setProgress(0);
                                        seekBar.setMax(mediaPlayer.getDuration());
                                        Log.d("Prog", "run: " + mediaPlayer.getDuration());
                                    }
                                });



                            } catch (Exception e) {
                            }
                        }

                    };
                    myHandler.postDelayed(runnable, 100);

                }
            }
        });
        checkUserPermission();

        Thread t = new runThread();
        t.start();
        return v;
    }


    public class runThread extends Thread {


        @Override
        public void run() {
            while (true) {

                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                Log.d("Runwa", "run: " + 1);
                if (mediaPlayer != null) {
                    seekBar.post(new Runnable() {
                        @Override
                        public void run() {
                            seekBar.setProgress(mediaPlayer.getCurrentPosition());
                        }
                    });

                    Log.d("Runwa", "run: " + mediaPlayer.getCurrentPosition());
                }
            }
        }

    }

    private void checkUserPermission(){
        if(Build.VERSION.SDK_INT>=23){
            if(ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.READ_EXTERNAL_STORAGE)
                    != PackageManager.PERMISSION_GRANTED){
                requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},123);
                return;
            }
        }
        loadSongs();
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode){
            case 123:
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED){
                    loadSongs();
                }else{
                    Toast.makeText(getContext(), "Permission Denied", Toast.LENGTH_SHORT).show();
                    checkUserPermission();
                }
                break;
            default:
                super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        }

    }

    private void loadSongs(){
        Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
        String selection = MediaStore.Audio.Media.IS_MUSIC+"!=0";
        Cursor cursor = getContext().getContentResolver().query(uri,null,selection,null,null);
        if(cursor != null){
            if(cursor.moveToFirst()){
                do{
                    String name = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
                    String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
                    String SongPath = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));

                    songInfo s = new songInfo(name,artist,SongPath);
                    songs.add(s);

                }while (cursor.moveToNext());
            }

            cursor.close();
            songAdapter1 = new songAdapter(songs, getActivity());

        }
    }
}

Adapter


public class songAdapter extends RecyclerView.Adapter<songAdapter.ViewHolder> {


    ArrayList<songInfo> songs;
    Context context;
    OnitemClickListener onitemClickListener;

    public songAdapter(ArrayList<songInfo> songs, Context context) {
        this.songs = songs;
        this.context = context;
    }



    public interface OnitemClickListener{
        void onItemclick(ViewHolder holder, View v, songInfo obj, int position);
    }
    public void setOnitemClickListener(OnitemClickListener onitemClickListener)
    {
        this.onitemClickListener=onitemClickListener;
    }



    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View mView= LayoutInflater.from(context).inflate(R.layout.card,parent,false);
        return new ViewHolder(mView);
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        final songInfo song = songs.get(position);
        holder.songName.setText(songs.get(position).getSongName());
        holder.artistName.setText(songs.get(position).getArtistName());
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(onitemClickListener!=null)
                {
                    onitemClickListener.onItemclick(holder,view,song,position);
                }
            }
        });

    }

    @Override
    public int getItemCount() {
        return songs.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        TextView songName,artistName;
        public ViewHolder(View itemView) {
            super(itemView);
            songName=(TextView)itemView.findViewById(R.id.songName);
            artistName=(TextView)itemView.findViewById(R.id.artistName);

        }

    }
}
公共类SongsTab扩展片段{
私有ArrayList歌曲=新建ArrayList();
回收视图回收视图;
SeekBar-SeekBar;
SongAdapterSongAdapter1;
媒体播放器;
私有处理程序myHandler=新处理程序();
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图v=充气机。充气(R.layout.songs,容器,假);
recyclerView=(recyclerView)v.findViewById(R.id.recyclerView);
seekBar=(seekBar)v.findViewById(R.id.seekBar);
songAdapter1=新的songAdapter(歌曲,getActivity());
recyclerView.setAdapter(songAdapter1);
LinearLayoutManager LinearLayoutManager=新的LinearLayoutManager(getActivity());
DividerItemDecoration DividerItemDecoration=新的DividerItemDecoration(recyclerView.getContext(),
linearLayoutManager.getOrientation());
recyclerView.setLayoutManager(linearLayoutManager);
回收视图。附加装饰(分割装饰);
songAdapter1.setOnitemClickListener(新的songAdapter.OnitemClickListener(){
@凌驾
public void onItemclick(songAdapter.ViewHolder支架,视图v,最终songInfo对象,内部位置){
if(mediaPlayer.isPlaying()){
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer=null;
}否则{
Runnable Runnable=新的Runnable(){
@凌驾
公开募捐{
试一试{
mediaPlayer=新的mediaPlayer();
setDataSource(obj.getSongPath());
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(新的mediaPlayer.OnPreparedListener(){
@凌驾
已准备好公开作废(MediaPlayer mp){
mp.start();
seekBar.setProgress(0);
seekBar.setMax(mediaPlayer.getDuration());
Log.d(“Prog”,“run:”+mediaPlayer.getDuration());
}
});
}捕获(例外e){
}
}
};
myHandler.postDelayed(runnable,100);
}
}
});
checkUserPermission();
线程t=新的runThread();
t、 start();
返回v;
}
公共类runThread扩展线程{
@凌驾
公开募捐{
while(true){
试一试{
睡眠(1000);
}捕捉(中断异常e){
e、 printStackTrace();
}
日志d(“Runwa”,“run:+1”);
如果(mediaPlayer!=null){
seekBar.post(新的Runnable(){
@凌驾
公开募捐{
seekBar.setProgress(mediaPlayer.getCurrentPosition());
}
});
Log.d(“Runwa”,“run:+mediaPlayer.getCurrentPosition());
}
}
}
}
私有void checkUserPermission(){
if(Build.VERSION.SDK_INT>=23){
if(ActivityCompat.checkSelfPermission(getContext()、Manifest.permission.READ\u外部存储)
!=PackageManager.权限(已授予){
requestPermissions(新字符串[]{Manifest.permission.READ\u EXTERNAL\u STORAGE},123);
返回;
}
}
loadSongs();
}
@凌驾
public void onRequestPermissionsResult(int-requestCode,@NonNull-String[]permissions,@NonNull-int[]grantResults){
开关(请求代码){
案例123:
if(grantResults[0]==已授予PackageManager.权限){
loadSongs();
}否则{
Toast.makeText(getContext(),“权限被拒绝”,Toast.LENGTH_SHORT.show();
checkUserPermission();
}
打破
违约:
super.onRequestPermissionsResult(请求代码、权限、授权结果);
}
}
私有void loadSongs(){
Uri Uri=MediaStore.Audio.Media.EXTERNAL\u CONTENT\u Uri;
字符串选择=MediaStore.Audio.Media.IS_MUSIC+“!=0”;
 recyclerView.setAdapter(songAdapter1);