jagdish vaghela Ответов: 0

Мой recycleview display list sometimes and sometimes not, а также Мой compete list отображают последний элемент, который я добавляю в свой arraylist, как его решить?


мой recycleview в В7 андроид.поддержка отображения списка когда-то и он не отображает список когда я перезагрузить приложение с моего телефона, он может рассчитывать все аудио-файл, но когда я поставил его, чтобы виджет TextView, он просто отобразить только последние добавления данных в список просмотра этого мой код, Пожалуйста, помогите мне...подскажите пожалуйста, как отобразить рециркулирует список данных одновременно с помощью кристаллов нового AsyncListUtil
package fragment.dev.concurrentmedia;

    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.DefaultItemAnimator;
    import android.support.v7.widget.LinearLayoutManager;
    import android.support.v7.widget.RecyclerView;

    public class MainActivity extends AppCompatActivity {

        RecyclerView recyclerView;
        RecAdapter adapter;

        @Override
        protected void onCreate (Bundle savedInstanceState) {
            super.onCreate (savedInstanceState);
            setContentView (R.layout.activity_main);

            recyclerView = (RecyclerView) findViewById (R.id.recycleview);
            RecyclerView.LayoutManager layoutManager = new LinearLayoutManager (getApplicationContext ());
            recyclerView.setLayoutManager (layoutManager);
            recyclerView.setItemAnimator (new DefaultItemAnimator ());
            recyclerView.setHasFixedSize (true);

            adapter = new RecAdapter (getApplicationContext ());
            recyclerView.setAdapter (adapter);
        }
    }


package fragment.dev.concurrentmedia;

/**
 * Created by Jagdish on 6/19/2016.
 */
public class AudioModel {
    private String displayName;
    private String duration;
    private String path;

    public String getDisplayName () {
        return displayName;
    }

    public void setDisplayName (String displayName) {
        this.displayName = displayName;
    }

    public String getDuration () {
        return duration;
    }

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

    public String getPath () {
        return path;
    }

    public void setPath (String path) {
        this.path = path;
    }
}


package fragment.dev.concurrentmedia;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Jagdish on 6/19/2016.
 */
public class RecAdapter extends RecyclerView.Adapter<RecAdapter.MyViewHolder> implements AudioSync.Response {
    public List<AudioModel> models = new ArrayList<> ();

    public RecAdapter (Context context) {
        AudioSync sync = new AudioSync ();
        sync.delegate = this;
        sync.execute (context);
    }

    @Override
    public MyViewHolder onCreateViewHolder (ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from (parent.getContext ()).inflate (R.layout.recycle_layout, parent, false);
        return new MyViewHolder (itemView);
    }

    @Override
    public void onBindViewHolder (MyViewHolder holder, int position) {
        AudioModel audioModel = models.get (position);
        holder.txtName.setText (audioModel.getDisplayName ());
        holder.txtDuration.setText (audioModel.getDuration ());
    }

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

    @Override
    public void processFinish (List<AudioModel> output) {
        for (int i = 0; i < output.size (); i++) {
            models.add (output.get (i));
        }
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {
        public TextView txtName;
        public TextView txtDuration;

        public MyViewHolder (View itemView) {
            super (itemView);
            txtName = (TextView) itemView.findViewById (R.id.txtName);
            txtDuration = (TextView) itemView.findViewById (R.id.txtDuration);
        }
    }
}


package fragment.dev.concurrentmedia;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
import android.provider.MediaStore;
import java.util.ArrayList;
import java.util.List;
/**
 * Created by Jagdish on 6/19/2016.
 */
public class AudioSync extends AsyncTask<Context, Void, List<AudioModel>> {
    public Response delegate = null;
    private String selection;
    private Uri uri;
    private Cursor cursor;
    @Override
    protected List<AudioModel> doInBackground (Context... params) {
        List<AudioModel> modelList = new ArrayList<> ();
        AudioModel model = new AudioModel ();
        try {
            selection = MediaStore.Audio.Media.IS_MUSIC + "!=0";
            uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
            String projection[] = {MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.DISPLAY_NAME, MediaStore.Audio.Media.DURATION};
            cursor = params[0].getContentResolver ().query (uri, projection, selection, null, null);
            cursor.moveToFirst ();
            int i = 0;
            do {
                model.setPath (cursor.getString (cursor.getColumnIndexOrThrow (MediaStore.Audio.Media.DATA)));
                model.setDisplayName (cursor.getString (cursor.getColumnIndexOrThrow (MediaStore.Audio.Media.DISPLAY_NAME)));
                model.setDuration (cursor.getString (cursor.getColumnIndexOrThrow (MediaStore.Audio.Media.DURATION)));
                modelList.add (model);
            } while (cursor.moveToNext ());
            return modelList;
        } catch (Exception e) {
            L.l ("EXCEPTION", e.getStackTrace ());
            return modelList;
        }
    }
    @Override
    protected void onPostExecute (List<AudioModel> audioModels) {
        delegate.processFinish (audioModels);
    }
    public interface Response {
        void processFinish (List<AudioModel> output);
    }
}

это мой первый пост с кодом так что если у меня была какая то ошибка то извините но пожалуйста помогите мне заранее спасибо

Что я уже пробовал:

я пытаюсь найти его в google, но он не работает, все сайты дают тот же результат, что и я набрал, но я не знаю, как мой код работает таким образом

0 Ответов