Problem ze zmianą stanów w aplikacji

0

Hej,
Mam pewien problem ze zmianą stanów aplikacji w jednym widoku
mam dwa stany pusty widok oraz listę . Na początku zrobiłam jak obiekt już jest dodany docelowej aktywności ukryłam emptyLayout jednocześnie odkryłam RecyclerView.
Problem jest taki ze jak usunę wszyskre obietky z podanej listy chciałby zeby pojawił się podany widok. Za bardzo nie wiem jak to zrobić

my contnet_drems


<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:app="http://schemas.android.com/apk/res-auto"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:background="@color/colorBackground"
             android:clickable="false"
             app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <LinearLayout
        android:id="@+id/emptyLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="@string/for_now_you_do_not_have_a_dream_n_add_dreams"
            android:textColor="@color/colorWhite"
            />
    </LinearLayout>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/myDreamsRecycleView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone"/>

</FrameLayout>
public class MyDreamsFragment extends Fragment {
  private static final int REQUEST_CODE_CREATE = 1;
    @BindView(R.id.myDreamsRecycleView)
    RecyclerView myDreamsRecycleView;
    @BindView(R.id.emptyLayout)
    LinearLayout emptyLayout;
    private MyDreamAdapter myDreamAdapter;
    private Unbinder unbinder;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
        TextView title = (TextView) getActivity().findViewById(R.id.textToolbar);
        title.setText(R.string.title_my_dreams);
    }


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View item = inflater.inflate(R.layout.content_my_drems, container, false);
        unbinder = ButterKnife.bind(this, item);
        return item;
    }


    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        myDreamAdapter = new MyDreamAdapter(getActivity().getLayoutInflater());
        myDreamsRecycleView.setLayoutManager(new LinearLayoutManager(getActivity()));
        myDreamsRecycleView.setAdapter(myDreamAdapter);


        ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
            @Override
            public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
                return false;
            }

            @Override
            public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
                int position = viewHolder.getAdapterPosition();

                    myDreamAdapter.removeDream(position);
                    SnackBarMessage("The dream has been removed.");
                    Toast.makeText(getActivity(), "dfsdfsd" + position, Toast.LENGTH_SHORT).show();
            }
        };
        ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleCallback);
        itemTouchHelper.attachToRecyclerView(myDreamsRecycleView);
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.menu_add, menu);
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        unbinder.unbind();
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {
            case R.id.action_addream:
                Intent intent = new Intent(getActivity(), AddDreamActivity.class);
                startActivityForResult(intent, REQUEST_CODE_CREATE);
                return true;
        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode == RESULT_OK) {
            if (requestCode == REQUEST_CODE_CREATE) {
                if (data != null) {
                    DreamDatabase dreamDatabase = data.getParcelableExtra("dream");
                    myDreamAdapter.addDream(dreamDatabase);
                    emptyLayout.setVisibility(View.GONE);
                    myDreamsRecycleView.setVisibility(View.VISIBLE);
                    SnackBarMessage("Dream was added.");
                }
            }
        } else {
            SnackBarMessage("Dream was cancel.");
        }
    }


0

W przypadku systemu Android dynamiczną zmianę layoutu powinno się realizować za pomocą zamiany fragmentów, a nie widoków. W związku z tym robisz to źle.

Jeżeli mimo wszystko chcesz podmieniać widoki, a nie fragmenty to nic prostszego. W onCreate Activity bądź Fragment wczytujesz oba widoki:

view1 = getLayoutInflater().inflate(R.layout.layout1, null);
view2 = getLayoutInflater().inflate(R.layout.layout2, null);

a później po sprawdzeniu warunku ustawiasz:

setContentView(view1);

lub

setContentView(view2);

Jeżeli natomiast chcesz to zrobić poprawnie to zapraszam do lektury dokumentacji, a właściwie treningu Android:
https://developer.android.com/training/basics/fragments/fragment-ui.html#Replace

1 użytkowników online, w tym zalogowanych: 0, gości: 1