2016-05-12 7 views
-1

私は検索ビューを含むアクションバーを持っています。リストビューから検索ボタンをクリックして何かを検索したいときは、アクションバーが左側に戻るボタンを表示します。ボタンを押すと、検索ビューと戻るボタンは表示されなくなりますが、リストビューには検索されたリストのみが表示されます。ActionBar戻るボタンが機能しません

public class ActivityThree extends AppCompatActivity{ 
FloatingActionButton fab; 
DBHelper myDb; 
ArrayList<AccountDetails> rList; 
ListView listView; 
RemainderAdapter adapter; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_three); 

    fab = (FloatingActionButton) findViewById(R.id.fab); 
    listView = (ListView) findViewById(R.id.listView); 
    myDb = new DBHelper(this); 

    showViews(); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(ActivityThree.this, ActivityFour.class)); 
     } 
    }); 
} 



private void showViews() { 
    rList = new ArrayList<AccountDetails>(); 
    rList = myDb.getAllRows(); 
    if (rList.size() != 0) { 
     adapter = new RemainderAdapter(this, rList); 
     listView.setAdapter(adapter); 
     listView.setTextFilterEnabled(true); 
    } else { 
     Toast.makeText(this,"There is no item in the list",Toast.LENGTH_SHORT).show(); 
    } 

} 
@Override 
public boolean onCreateOptionsMenu(Menu menu){ 
    getMenuInflater().inflate(R.menu.menu_item,menu); 
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    final SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView(); 
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
    searchView.setIconifiedByDefault(false); 

SearchView.OnQueryTextListener textChangeListener = new SearchView.OnQueryTextListener() 
{ 
    @Override 
    public boolean onQueryTextChange(String newText) 
    { 
      adapter.getFilter().filter(newText); 
     return true; 
    } 
    @Override 
    public boolean onQueryTextSubmit(String query) 
    { 

     adapter.getFilter().filter(query); 
     invalidateOptionsMenu(); 
     return true; 
    } 
}; 
searchView.setOnQueryTextListener(textChangeListener); 
    return super.onCreateOptionsMenu(menu); 

} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    if(id==R.id.changePwd){ 
     startActivity(new Intent(this, PwdChange.class)); 
     return true; 
    } 
    if(id==R.id.about){ 
     startActivity(new Intent(this, ActivityAbout.class)); 
     return true; 
    }if(id==R.id.share){ 
     try 
     { Intent i = new Intent(Intent.ACTION_SEND); 
      i.setType("text/plain"); 
      i.putExtra(Intent.EXTRA_SUBJECT, "ABCD"); 
      String sAux = "\nLet me recommend you this application\n\n"; 
      i.putExtra(Intent.EXTRA_TEXT, sAux); 
      startActivity(Intent.createChooser(i, "Choose any one")); 
     } 
     catch(Exception e) 
     { 
     } 
    } 
    if(id==R.id.exit){ 
     android.os.Process.killProcess(android.os.Process.myPid()); 
     System.exit(0); 
    } 
    return super.onOptionsItemSelected(item); 
} 

}

+0

この戻るボタンをクリックすると元のリストが表示されます。ありがとうございました – diya

+0

listadapterを再度設定してください。 –

+0

ようこそstackoverflowへ!あなたのコードも投稿してください。 –

答えて

0

これはsearchView'sバックボタンをクリックするとトーストを示しているコードを動作しています。

@Override 
public boolean onCreateOptionsMenu(Menu menu){ 
    getMenuInflater().inflate(R.menu.menu_item,menu); 
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    final SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView(); 
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
    searchView.setIconifiedByDefault(false); 

    MenuItem searchItem = menu.findItem(R.id.action_search); 
    MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() { 
     @Override 
     public boolean onMenuItemActionExpand(MenuItem item) { 
      return true; 
     } 

     @Override 
     public boolean onMenuItemActionCollapse(MenuItem item) { 
      Toast.makeText(MainActivity.this," Back Button Clicked",Toast.LENGTH_LONG).show(); 
      showViews(); 
      return true; 
     } 
    }); 

    SearchView.OnQueryTextListener textChangeListener = new SearchView.OnQueryTextListener() 
    { 
     @Override 
     public boolean onQueryTextChange(String newText) 
     { 
      adapter.getFilter().filter(newText); 
      return true; 
     } 
     @Override 
     public boolean onQueryTextSubmit(String query) 
     { 

      adapter.getFilter().filter(query); 
      invalidateOptionsMenu(); 
      return true; 
     } 
    }; 
    searchView.setOnQueryTextListener(textChangeListener); 
    return super.onCreateOptionsMenu(menu); 

} 
+0

、私はonCreateOptionsMenu.butでこのコードをputted work.plsはあなたが送ったこのコードをどこに置くかを言っています.iは自分のcode.plsを投稿しました – diya

+0

私のコードを更新しました。 searchviewが展開され、戻るボタンをクリックすると 'showViews()'が呼び出され、データセット全体を持つ同じアダプタがリストに追加されます。 –

+0

しかし、それは働いていません。私はあなたのコードを私のonCreateOptionsMenu(メニューメニュー)に親切に設定しました。その後、私は理解してくれた方が良いでしょう。事前に – diya

関連する問題