2017-04-20 66 views
0

搜索欄位於操作欄中,當我點擊它時沒有任何操作。Android搜索查看無法使用

Activity.java

public class MainActivity extends AppCompatActivity { 
    DrawerLayout mDrawerLayout; 
    NavigationView mNavigationView; 
    FragmentManager mFragmentManager; 
    FragmentTransaction mFragmentTransaction; 
    ImageView profileiamge; 
    DatabaseReference mDatabase; 
    private RecyclerView recyclerView1; 
    SearchAdapter mAdapter; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     /** 
     *Setup the DrawerLayout and NavigationView 
     */ 
     String username = getIntent().getStringExtra("username"); 
     String imageurl = getIntent().getStringExtra("imageurl"); 
     String email = getIntent().getStringExtra("email"); 
     Log.e("url",imageurl); 

      mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout); 
      mNavigationView = (NavigationView) findViewById(R.id.shitstuff) ; 
     View header = mNavigationView.getHeaderView(0); 
     profileiamge=(ImageView)header.findViewById(R.id.imageView5) ; 
     new DownloadImageTask(profileiamge).execute(imageurl); 

     /** 
     * Lets inflate the very first fragment 
     * Here , we are inflating the TabFragment as the first Fragment 
     */ 

      mFragmentManager = getSupportFragmentManager(); 
      mFragmentTransaction = mFragmentManager.beginTransaction(); 
      mFragmentTransaction.replace(R.id.containerView,new TabFragment()).commit(); 
     /** 
     * Setup click events on the Navigation View Items. 
     */ 

      mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
      @Override 
      public boolean onNavigationItemSelected(MenuItem menuItem) { 
       mDrawerLayout.closeDrawers(); 



       if (menuItem.getItemId() == R.id.nav_item_sent) { 
        FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction(); 
        fragmentTransaction.replace(R.id.containerView,new SentFragment()).commit(); 

       } 

       if (menuItem.getItemId() == R.id.nav_item_inbox) { 
        FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction(); 
        xfragmentTransaction.replace(R.id.containerView,new TabFragment()).commit(); 
       } 

       return false; 
      } 

     }); 

     /** 
     * Setup Drawer Toggle of the Toolbar 
     */ 

       android.support.v7.widget.Toolbar toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar); 
       ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this,mDrawerLayout, toolbar,R.string.app_name, 
       R.string.app_name); 
       toolbar.setTitle(" "); 
       mDrawerLayout.setDrawerListener(mDrawerToggle); 

       mDrawerToggle.syncState(); 
     mDatabase = FirebaseDatabase.getInstance().getReference(); 
     GeoFire geoFire = new GeoFire(mDatabase.child("Location")); 
     geoFire.setLocation("firebase-hq1", new GeoLocation(37.7855889, -122.4056973), new GeoFire.CompletionListener() { 
      @Override 
      public void onComplete(String key, DatabaseError error) { 
       if (error != null) { 
        System.err.println("There was an error saving the location to GeoFire: " + error); 
       } else { 
        System.out.println("Location saved on server successfully!"); 
       } 
      } 

     }); 


    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.main, menu); 
     // getMenuInflater().inflate(R.menu.main, menu); 
     SearchManager searchManager = (SearchManager) 
       getSystemService(Context.SEARCH_SERVICE); 
     MenuItem searchMenuItem = menu.findItem(R.id.action_search); 
     SearchView searchView = (SearchView) searchMenuItem.getActionView(); 

     searchView.setSearchableInfo(searchManager. 
       getSearchableInfo(getComponentName())); 
     searchView.setSubmitButtonEnabled(true); 
     SearchView.OnQueryTextListener textChangeListener = new SearchView.OnQueryTextListener() { 

      @Override 
      public boolean onQueryTextSubmit(final String query) { 
Log.e("Search", "Search"); 
       return false; 
      } 

      @Override 
      public boolean onQueryTextChange(final String newText) { 


       Log.e("Search", "Search"); 
       DatabaseReference databaseReference1 = mDatabase.child("Coupon"); 
       databaseReference1.addValueEventListener(new ValueEventListener() { 
        @Override 
        public void onDataChange(DataSnapshot dataSnapshot) { 
         List<Coupon> couponList = new ArrayList<>(); 
         for (DataSnapshot val : dataSnapshot.getChildren()) { 
          //I am not sure what record are you specifically looking for 
          //This is if you are getting the Key which is the record ID for your Coupon Object 
          if (val.getKey().contains(newText)) { 
           // count++; 
           Coupon coupon = new Coupon(); 
           coupon = dataSnapshot.child(val.getKey()).getValue(Coupon.class); 
           couponList.add(coupon); 
          } 

          //This is if your are querying for the hotel child 
          if (val.child("hotel").getValue(String.class).contains(newText)) { 
           //Do what you want with the record 
          } 
         } 
         recyclerView1 = (RecyclerView) findViewById(R.id.recycler_view); 

         // prepareMovieData(); 
         RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(MainActivity.this); 
         recyclerView1.setLayoutManager(mLayoutManager); 
         recyclerView1.setItemAnimator(new DefaultItemAnimator()); 
         mAdapter = new SearchAdapter(MainActivity.this, couponList); 
         recyclerView1.setAdapter(mAdapter); 
         mAdapter.notifyDataSetChanged(); 
        } 

        @Override 
        public void onCancelled(DatabaseError databaseError) { 

        } 

       }); 

       return true; 
      } 
     }; 
     searchView.setOnQueryTextListener(textChangeListener); 
     return true; 

    } 
} 

我把登錄onQueryTextSubmit和onQueryTextChange方法,但沒有登錄logcat.That意味着搜索查看未被觸發。

main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/action_search" 
     android:orderInCategory="100" 
     android:icon="@drawable/search" 
     android:title="@string/action_settings" 
     android:layout_centerInParent="true" 
     app:showAsAction="always|collapseActionView" 
     app:actionViewClass="android.widget.SearchView" /> 
    <item 
     android:id="@+id/action_alarm" 
     android:orderInCategory="100" 
     android:icon="@drawable/alarm" 
     android:title="@string/action_settings" 
     app:showAsAction="ifRoom" /> 
</menu> 

希望有人能幫助我提前來解決這個issue.Thanks。

回答

1

請檢查這個YouTube鏈接Link 你需要這樣的輸出嗎?

+0

yes.that是確切的。 – HRCJ

+1

好吧然後我會發送我的項目,請檢查它,你能給我你的電子郵件。我將發送完整的源代碼 –

+0

非常感謝[email protected] – HRCJ