2017-10-09 5 views
0

J'ai deux fichiers xml un activity_home.xml avec tiroir de navigation et ses fragments et un autre carlist.xml sans tiroir de navigation. J'ai besoin de la même barre d'outils avec dans mon carlist.xml. Je suis complètement confus.Je veux importer l'icône du tiroir de navigation avec le fichier xml de la barre d'outils dans un fichier XML différent sans changer le contenu

Voici mon activity_home.xml avec d'autres fragments

activity_home.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" 
android:background="@drawable/heat3" 
tools:openDrawer="start"> 
<include 
    layout="@layout/app_bar_home" 
    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_home" 
    android:background="#4f0e0d0e" 
    app:itemTextColor="@android:color/white" 
    app:itemIconTint="@android:color/white" 
    app:menu="@menu/activity_home_drawer" /> 

c'est mon fichier home.java

 package game.bakarunlimited.com.offwash; 
     import android.content.Intent; 
     import android.os.Bundle; 
     import android.support.design.widget.FloatingActionButton; 
     import android.support.v7.widget.LinearLayoutManager; 
     import android.support.v7.widget.RecyclerView; 
     import android.view.View; 
     import android.support.design.widget.NavigationView; 
     import android.support.v4.view.GravityCompat; 
     import android.support.v4.widget.DrawerLayout; 
     import android.support.v7.app.ActionBarDrawerToggle; 
     import android.support.v7.app.AppCompatActivity; 
     import android.support.v7.widget.Toolbar; 
     import android.view.Menu; 
     import android.view.MenuItem; 
     import android.widget.TextView; 

     import com.firebase.ui.database.FirebaseRecyclerAdapter; 
     import com.google.firebase.database.DatabaseReference; 
     import com.google.firebase.database.FirebaseDatabase; 
     import com.squareup.picasso.Picasso; 

     import game.bakarunlimited.com.offwash.Common.Common; 
     import game.bakarunlimited.com.offwash.Interface.ItemClickListener; 
     import game.bakarunlimited.com.offwash.Model.Category; 
     import game.bakarunlimited.com.offwash.ViewHolder.MenuViewHolder; 

    public class Home extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 


FirebaseDatabase database; 
DatabaseReference category; 
TextView txtFullName; 

RecyclerView recycler_menu; 
RecyclerView.LayoutManager layoutManager; 
FirebaseRecyclerAdapter<Category,MenuViewHolder> adapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    toolbar.setTitle("Menu"); 
    setSupportActionBar(toolbar); 

    //Init firebase 
    database = FirebaseDatabase.getInstance(); 
    category = database.getReference("Category"); 


    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
       Intent cartIntent = new Intent(Home.this,Cart.class); 
      startActivity(cartIntent); 
     } 
    }); 

    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.setDrawerListener(toggle); 
    toggle.syncState(); 

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


    //Set Name For user 
    View headerView = navigationView.getHeaderView(0); 
    txtFullName= (TextView)headerView.findViewById(R.id.txtFullName); 
    txtFullName.setText(Common.currentUser.getName()); 

    //load menu 
    recycler_menu = (RecyclerView)findViewById(R.id.recycler_menu); 
    recycler_menu.setHasFixedSize(true); 
    layoutManager = new LinearLayoutManager(this); 
    recycler_menu.setLayoutManager(layoutManager); 

    loadMenu(); 
} 
    private void loadMenu(){ 
     adapter = new FirebaseRecyclerAdapter<Category, MenuViewHolder>(Category.class,R.layout.menu_item,MenuViewHolder.class,category) { 
      @Override 
      protected void populateViewHolder(MenuViewHolder viewHolder, Category model, int position) { 

       viewHolder.txtMenuName.setText(model.getName()); 
       Picasso.with(getBaseContext()).load(model.getImage()).into(viewHolder.imageView); 
       final Category clickItem = model; 
       viewHolder.setItemClickListener(new ItemClickListener() { 
        @Override 
        public void onClick(View view, int position, boolean isLongClick) { 
         //Get Category Id and send them to new Activity 
         Intent foodList = new Intent(Home.this,CarList.class); 
         //Because CategoryId is key, so we just get key of this item 
         foodList.putExtra("CategoryId",adapter.getRef(position).getKey()); 
         startActivity(foodList); 
        } 
       }); 
      } 
     }; 
     recycler_menu.setAdapter(adapter); 
    } 

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

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.home, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    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_menu) { 
     // Handle the camera action 
    } else if (id == R.id.nav_cart) { 

     Intent cartIntent = new Intent(Home.this,Cart.class); 
     startActivity(cartIntent); 

    } else if (id == R.id.nav_orders) { 
     Intent orderIntent = new Intent(Home.this,OrderStatus.class); 
     startActivity(orderIntent); 

    } else if (id == R.id.nav_log_out) { 
     //logout 
     Intent signin = new Intent(Home.this,Signin.class); 
     signin.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(signin); 
    } 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 

}

et j'ai besoin que la barre d'outils avec tiroir de navigation dans cette activity_carlist.xml

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="game.bakarunlimited.com.offwash.CarList"> 

<com.mancj.materialsearchbar.MaterialSearchBar 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/searchBar" 
    android:layout_alignParentTop="true" 
    app:mt_speechMode="false" 
    app:mt_hint="Enter Your Food" 
    /> 
<android.support.v7.widget.RecyclerView 
    android:layout_below="@id/searchBar" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/recycler_food" 
    android:scrollbars="vertical" 
    /> 

Et fichier java pour l'carliste est

package game.bakarunlimited.com.offwash; 
    import android.content.Intent; 
    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.support.v7.widget.LinearLayoutManager; 
    import android.support.v7.widget.RecyclerView; 
    import android.text.Editable; 
    import android.text.TextWatcher; 
    import android.view.View; 
    import com.firebase.ui.database.FirebaseRecyclerAdapter; 
    import com.google.firebase.database.DataSnapshot; 
    import com.google.firebase.database.DatabaseError; 
    import com.google.firebase.database.DatabaseReference; 
    import com.google.firebase.database.FirebaseDatabase; 
    import com.google.firebase.database.ValueEventListener; 
    import com.mancj.materialsearchbar.MaterialSearchBar; 
    import com.squareup.picasso.Picasso; 

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

    import game.bakarunlimited.com.offwash.Interface.ItemClickListener; 
    import game.bakarunlimited.com.offwash.Model.Food; 
    import game.bakarunlimited.com.offwash.ViewHolder.FoodViewHolder; 

public class CarList extends AppCompatActivity { 
RecyclerView recyclerView; 
RecyclerView.LayoutManager layoutManager; 

FirebaseDatabase database; 
DatabaseReference foodList; 

String categoryId=""; 
FirebaseRecyclerAdapter<Food,FoodViewHolder> adapter; 

// search functionality 
FirebaseRecyclerAdapter<Food,FoodViewHolder> searchAdapter; 
List<String> suggestList = new ArrayList<>(); 
MaterialSearchBar materialSearchBar; 

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

    //Init firebase 
    database = FirebaseDatabase.getInstance(); 
    foodList = database.getReference("Foods"); 

    //load menu 
    recyclerView = (RecyclerView)findViewById(R.id.recycler_food); 
    recyclerView.setHasFixedSize(true); 
    layoutManager = new LinearLayoutManager(this); 
    recyclerView.setLayoutManager(layoutManager); 

    //get intent here 
    if(getIntent()!= null) 
     categoryId = getIntent().getStringExtra("CategoryId"); 
    if(!categoryId.isEmpty()&& categoryId != null) 
    { 
     loadListFood(categoryId); 
    } 

    //search 
    materialSearchBar = (MaterialSearchBar)findViewById(R.id.searchBar); 
    materialSearchBar.setHint("Enter your food"); 
    loadSuggest(); 
    materialSearchBar.setLastSuggestions(suggestList); 
    materialSearchBar.setCardViewElevation(10); 
    materialSearchBar.addTextChangeListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

     } 

     @Override 
     public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

      List<String> suggest = new ArrayList<String>(); 
      for(String search:suggestList) 
      { 
       if(search.toLowerCase().contains(materialSearchBar.getText().toLowerCase())) 
        suggest.add(search); 
      } 
      materialSearchBar.setLastSuggestions(suggest); 

     } 

     @Override 
     public void afterTextChanged(Editable editable) { 

     } 
    }); 
    materialSearchBar.setOnSearchActionListener(new MaterialSearchBar.OnSearchActionListener() { 
     @Override 
     public void onSearchStateChanged(boolean enabled) { 
      //on search bar is closed 
      //Restore original suggest adapter 
       if(!enabled) 
        recyclerView.setAdapter(adapter); 
     } 

     @Override 
     public void onSearchConfirmed(CharSequence text) { 
      //on search finish 
      // show the result of the adapter 
      startSearch(text); 

     } 

     @Override 
     public void onButtonClicked(int buttonCode) { 

     } 
    }); 

} 

private void startSearch(CharSequence text) { 
    searchAdapter = new FirebaseRecyclerAdapter<Food, FoodViewHolder>(
      Food.class, 
      R.layout.car_item, 
      FoodViewHolder.class, 
      foodList.orderByChild("Name").equalTo(text.toString()) 
    ) { 
     @Override 
     protected void populateViewHolder(FoodViewHolder viewHolder, Food model, int position) { 
      viewHolder.food_name.setText(model.getName()); 
      Picasso.with(getBaseContext()).load(model.getImage()).into(viewHolder.food_image); 

      final Food local = model; 
      viewHolder.setItemClickListener(new ItemClickListener() { 
       @Override 
       public void onClick(View view, int position, boolean isLongClick) { 
        Intent foodDetail = new Intent(CarList.this,CarDetail.class); 
        foodDetail.putExtra("FoodId",searchAdapter.getRef(position).getKey());//send the food id to new Activity 
        startActivity(foodDetail); 
       } 
      }); 
     } 
    }; 
    recyclerView.setAdapter(searchAdapter);//set adapter for recyclerview 
} 

private void loadSuggest() { 

    foodList.orderByChild("MenuId").equalTo(categoryId) 
      .addValueEventListener(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        for (DataSnapshot postSnapshot:dataSnapshot.getChildren()) 
        { 
         Food item = postSnapshot.getValue(Food.class); 
         suggestList.add(item.getName()); 
        } 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 

       } 
      }); 
} 

private void loadListFood(String categoryId) { 
     adapter = new FirebaseRecyclerAdapter<Food, FoodViewHolder>(Food.class, 
       R.layout 
       .car_item, 
       FoodViewHolder.class, 
       foodList.orderByChild("MenuId").equalTo(categoryId) // like : Select * from foods where MenuId 
       ) { 
      @Override 
      protected void populateViewHolder(FoodViewHolder viewHolder, Food model, int position) { 
      viewHolder.food_name.setText(model.getName()); 
       Picasso.with(getBaseContext()).load(model.getImage()).into(viewHolder.food_image); 

       final Food local = model; 
       viewHolder.setItemClickListener(new ItemClickListener() { 
        @Override 
        public void onClick(View view, int position, boolean isLongClick) { 
         Intent foodDetail = new Intent(CarList.this,CarDetail.class); 
         foodDetail.putExtra("FoodId",adapter.getRef(position).getKey());//send the food id to new Activity 
         startActivity(foodDetail); 
        } 
       }); 
      } 
     }; 

    // Set Adapter 
    recyclerView.setAdapter(adapter); 
    } 
} 

Répondre

-2

Essayez utilisé la mise en page de fragment. Cos jusqu'ici j'ai vu u disposition mise en page pas fragmentée.

+0

Veuillez ne pas utiliser textspeak. Utilisez les mots normaux. – Moritz