2017-10-09 32 views
0

我有兩個xml文件,一個是具有導航抽屜及其碎片的activity_home.xml,另一個是沒有導航抽屜的carlist.xml。我需要在我的carlist.xml中使用相同的工具欄。我完全困惑。我想在不改變內容的情況下導入具有不同xml文件的工具欄xml文件的導航工具欄圖標

這是我activity_home.xml與其他片段

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" /> 

這是我的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; 
} 

}

我需要在這裏抽屜式導航欄該工具欄在此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" 
    /> 

和Java文件的卡洛斯是

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); 
    } 
} 

回答

-2

嘗試使用片段佈局。 COS迄今爲止我已經看到你使用佈局而不是片段佈局。

+0

請不要使用textspeak。使用正常的詞語。 – Moritz