Hinzufügen RecyclerView innerhalb von DrawerLayout

Ich möchte in der Lage sein, um eine RecyclerView innerhalb der main-Seite des DrawyerLayout MainActivity. Jedoch hinzufügen mein code da unten nicht zulassen, dass die RecyclerView ist obendrein:

Hinzufügen RecyclerView innerhalb von DrawerLayout

Aber ich kann immer noch Zugriff auf die Schublade:

Hinzufügen RecyclerView innerhalb von DrawerLayout

Wie kann ich diese Arbeit machen?

MainActivity:

public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {

    private List<Person> persons;
    private RecyclerView rv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);  //Original activity

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        //*** BEGIN THE RECYCLER VIEW *** //
        rv=(RecyclerView)findViewById(R.id.rv);

        LinearLayoutManager llm = new LinearLayoutManager(this);
        rv.setLayoutManager(llm);
        rv.setHasFixedSize(true);

        initializeData();
        initializeAdapter();

        //Original Drawer layout code
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);

        drawer.addDrawerListener(toggle);   //  drawer.setDrawerListener(toggle);  Deprecated
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
    }

    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }

    //*** REMOVE THE MAIN DROP DOWN MENU ***
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }



    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        //Handle action bar item clicks here. The action bar will
        //automatically handle clicks on the Home/Up button, so long
        //as you specify a parent activity in AndroidManifest.xml.
//       int id = item.getItemId();
//
//       //noinspection SimplifiableIfStatement
//       if (id == R.id.action_settings) {
//           return true;
//       }

        return super.onOptionsItemSelected(item);
    }

    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        //Handle navigation view item clicks here.
        int id = item.getItemId();

        if (id == R.id.nav_breakfast) {
            //Handle the camera action


        } else if (id == R.id.nav_lunch) {

        } else if (id == R.id.nav_dinner) {


        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }

    private void initializeData(){
        persons = new ArrayList<>();
        persons.add(new Person("Emma Wilson", "23 years old", R.drawable.emma));
        persons.add(new Person("Lavery Maiss", "25 years old", R.drawable.lavery));

        for ( int i = 0; i <=1000; i++) {
            persons.add(new Person("Lillie Watts", "35 years old", R.drawable.lillie));
        }
    }

    private void initializeAdapter(){
        RVAdapter adapter = new RVAdapter(persons);
        rv.setAdapter(adapter);
    }
}

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="16dp"        >
            <android.support.v7.widget.RecyclerView
                android:layout_height="match_parent"
                android:layout_width="match_parent"
                android:id="@+id/rv">
            </android.support.v7.widget.RecyclerView>

        </LinearLayout>

    </android.support.v4.widget.DrawerLayout>

Update
Vorhanden anzeigen:

Hinzufügen RecyclerView innerhalb von DrawerLayout

activity_main:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

        <!-- Added to allow RecyclerView -->
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <include
                layout="@layout/app_bar_main"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

            <android.support.v7.widget.RecyclerView
                android:layout_height="wrap_content"
                android:layout_width="match_parent"
                android:id="@+id/rv">
            </android.support.v7.widget.RecyclerView>

        </LinearLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>
  • Was ist die einfachste einfachste Weg, zu integrieren?
  • Wollen Sie die RecyclerView in der Schublade, oder nur dahinter?
  • Ich will, dass die recycler anzeigen erscheinen nicht in der Schublade, aber auf der Hauptseite, so dass ein Benutzer kann navigieren und dann, wenn der Zugriff auf die Schublade wird Sie angezeigt, über die recyclerview
  • können Sie bitte fügen Sie den Inhalt layout/app_bar_main.xml?
InformationsquelleAutor Sauron | 2017-02-01
Schreibe einen Kommentar