Как сохранить содержимое адаптера в представлении утилизатора, чтобы при закрытии приложения и перезапуске адаптер оставался прежним - PullRequest
0 голосов
/ 07 февраля 2020

Это мое основное занятие на данный момент

public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager layoutManager;
private List<userTask>  tasklist= new ArrayList<>();
private userTaskAdapter adapter;
//private Context context;
private static Bundle mBundleState;
private final String KEY_RECYCLER_STATE = "recycler_state";
private Parcelable listState;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    recyclerView = (RecyclerView) findViewById(R.id.recycleOne);

    recyclerView.setHasFixedSize(true);

    adapter = new userTaskAdapter(tasklist);
    layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setItemAnimator(new DefaultItemAnimator());
    recyclerView.setAdapter(adapter);
    preparetestdata();

}

private void preparetestdata()
{
    String data = "";


    try {

        InputStream fis = MainActivity.this.getResources().getAssets().open("task.txt");
        DataInputStream in = new DataInputStream(fis);
        BufferedReader br = new BufferedReader(new InputStreamReader(in));

        while ((data = br.readLine()) != null)
        {
            String delims = "[:]+";
            String[] temp = data.split(delims);
            String tempTask = new String();
            String tempDescription = new String();
            for (int i=0; i < temp.length; i++)
            {
                if(i == 0)
                    tempTask = temp[i];
                else
                    tempDescription = temp[i];
            }
            userTask tempUser = new userTask(tempTask, tempDescription);
            tasklist.add(tempUser);
        }

    } catch (IOException e)
    {
        e.printStackTrace();
    }
}

/**
 * This function will add new task to task list
 * @param v
 */
public void onAdd(View v)
{
    EditText editTaskTitle = (EditText) findViewById(R.id.taskTitle);
    EditText editDescription = (EditText) findViewById(R.id.taskDescription);
    String tname = editTaskTitle.getText().toString();
    String tdescrip = editDescription.getText().toString();
    userTask task = new userTask(tname, tdescrip);
    tasklist.add(task);
    Log.d("Tname :", tname);
    Log.d("tdescription :", tdescrip);
    try {
        FileOutputStream stream = new FileOutputStream(new File(getFilesDir(), "task.txt"));

        int counter =0;
        for (int i =0; i < tasklist.size(); i++)
        {

            String total = tasklist.get(i).getTName() + " : " + tasklist.get(i).getTDescrip() + "\n";
            stream.write(total.getBytes());
            counter++;
        }
        Toast.makeText(this, "got here", Toast.LENGTH_SHORT).show();
        stream.close();
        adapter.notifyDataSetChanged();
        //recyclerView
        Log.d("UpList", String.valueOf(counter));
    }catch(IOException e) {
        e.printStackTrace();
    }
}




/**
@Override
protected void onSaveInstanceState(Bundle state)
{
    super.onSaveInstanceState(state);
    //state.putSerializable("listdata", adapter.);
}**/

@Override
public void onStop()
{
    super.onStop();
    mBundleState = new Bundle();
    listState = recyclerView.getLayoutManager().onSaveInstanceState();
    mBundleState.putParcelable(KEY_RECYCLER_STATE, listState);

}


@Override
public void onResume()
{
    super.onResume();
    if (mBundleState != null)
    {
        listState = mBundleState.getParcelable(KEY_RECYCLER_STATE);
        recyclerView.getLayoutManager().onRestoreInstanceState(listState);
    }
}

Когда я добавляю новую задачу и выходу из приложения, эта новая задача все еще будет в представлении переработчика. Но когда я закрою приложение, эта новая задача все равно не будет отображаться в окне перезапуска. Я думал о сохранении состояния адаптера, но не совсем уверен, как это сделать. Я пытался сделать сериализуемый метод, но адаптеры не сериализуемы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...