2016-07-14 46 views
-1

我試圖創建一個SearchView只有一個簡單的ListView沒有圖像,它的工作。但是在我將圖像添加到列表視圖之後... SearchView不起作用。我是新手,所以請幫忙。提前致謝。如何在使用圖像的ListView的Actionbar中創建SearchView?

這是我的主要代碼

public class SecondActivity extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 

ListView listview; SearchView sv; SearchManager searchManager; 
ArrayAdapter<String> myAdapter; 
String [] Topics = {"ABC","BCD","CDE","DEF","EFG","FGH","GHI","HIJ"}; 
CustomAdapter adapter; 
String[] NOS; 
int[] images = {R.drawable.logheader,R.drawable.logheader,R.drawable.logheader,R.drawable.logheader,R.drawable.logheader,R.drawable.logheader,R.drawable.logheader,R.drawable.logheader}; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_second); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

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


     adapter = new CustomAdapter(this,Topics,images); 

    listview = (ListView) findViewById(R.id.sell); 
    sv =(SearchView) findViewById(R.id.search_Action); 
    searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    myAdapter = adapter; 
    listview.setAdapter(adapter); 


final Assigner assigner = new Assigner(); 

    listview.setOnItemClickListener(
      new AdapterView.OnItemClickListener(){ 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id){ 
        String Op = String.valueOf(parent.getItemAtPosition(position)); 
        Toast.makeText(SecondActivity.this,Op, Toast.LENGTH_LONG).show(); 
         NOS= assigner.rept(position); 
         Intent into = new Intent(SecondActivity.this,FourthActivity.class); 
         into.putExtra("well",NOS); 
         startActivity(into); 

       }} 

    ); 

} 

boolean twice; 

public void onBackPressed() { 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 

    if (drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawer(GravityCompat.START); 
    } else { 



    } 


    if (twice == true) { 
     Intent intt = new Intent(Intent.ACTION_MAIN); 
     intt.addCategory(Intent.CATEGORY_HOME); 
     intt.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intt); 
     finish(); 
     System.exit(0); 
    } 

    Toast.makeText(this, "Press BACK again to exit", Toast.LENGTH_SHORT).show(); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      twice = false; 
     } 
    }, 3000); 
    twice = true; 
} 





@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.second,menu); 

    sv = (SearchView) menu.findItem(R.id.search_Action).getActionView(); 
    sv.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
    sv.setQueryHint("Search any topic..."); 

    sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 
      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) { 
      myAdapter.getFilter().filter(newText); 
      return false; 
     } 
    }); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.search_Action) { 
     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_camera) { 
     // Handle the camera action 
    } else if (id == R.id.nav_gallery) { 
    } 
    else if (id == R.id.nav_share) { 

     } 

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

}

+0

安置自己在這裏的代碼更好的幫助 – Vickyexpert

回答

0

結帳this,這正是你在尋找什麼,,只需添加圖像列表視圖

public class MainActivity extends SherlockActivity { 

    // Declare Variables 
    ListView list; 
    ListViewAdapter adapter; 
    EditText editsearch; 
    String[] rank; 
    String[] country; 
    String[] population; 
    ArrayList<WorldPopulation> arraylist = new ArrayList<WorldPopulation>(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.listview_main); 

     // Generate sample data 
     rank = new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }; 

     country = new String[] { "China", "India", "United States", 
       "Indonesia", "Brazil", "Pakistan", "Nigeria", "Bangladesh", 
       "Russia", "Japan" }; 

     population = new String[] { "1,354,040,000", "1,210,193,422", 
       "315,761,000", "237,641,326", "193,946,886", "182,912,000", 
       "170,901,000", "152,518,015", "143,369,806", "127,360,000" }; 

     // Locate the ListView in listview_main.xml 
     list = (ListView) findViewById(R.id.listview); 

     for (int i = 0; i < rank.length; i++) { 
      WorldPopulation wp = new WorldPopulation(rank[i], country[i], 
        population[i]); 
      // Binds all strings into an array 
      arraylist.add(wp); 
     } 

     // Pass results to ListViewAdapter Class 
     adapter = new ListViewAdapter(this, arraylist); 

     // Binds the Adapter to the ListView 
     list.setAdapter(adapter); 
    } 

    // Create the options menu 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Get the options menu view from menu.xml in menu folder 
     getSupportMenuInflater().inflate(R.menu.menu, menu); 

     // Locate the EditText in menu.xml 
     editsearch = (EditText) menu.findItem(R.id.menu_search).getActionView(); 

     // Capture Text in EditText 
     editsearch.addTextChangedListener(textWatcher); 

     // Show the search menu item in menu.xml 
     MenuItem menuSearch = menu.findItem(R.id.menu_search); 

     menuSearch.setOnActionExpandListener(new OnActionExpandListener() { 

      // Menu Action Collapse 
      @Override 
      public boolean onMenuItemActionCollapse(MenuItem item) { 
       // Empty EditText to remove text filtering 
       editsearch.setText(""); 
       editsearch.clearFocus(); 
       return true; 
      } 

      // Menu Action Expand 
      @Override 
      public boolean onMenuItemActionExpand(MenuItem item) { 
       // Focus on EditText 
       editsearch.requestFocus(); 

       // Force the keyboard to show on EditText focus 
       InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
       return true; 
      } 
     }); 

     // Show the settings menu item in menu.xml 
     MenuItem menuSettings = menu.findItem(R.id.menu_settings); 

     // Capture menu item clicks 
     menuSettings.setOnMenuItemClickListener(new OnMenuItemClickListener() { 

      @Override 
      public boolean onMenuItemClick(MenuItem item) { 
       // TODO Auto-generated method stub 
       // Do something here 
       Toast.makeText(getApplicationContext(), "Nothing here!", 
         Toast.LENGTH_LONG).show(); 
       return false; 
      } 

     }); 

     return true; 
    } 

    // EditText TextWatcher 
    private TextWatcher textWatcher = new TextWatcher() { 

     @Override 
     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 
      String text = editsearch.getText().toString() 
        .toLowerCase(Locale.getDefault()); 
      adapter.filter(text); 
     } 

     @Override 
     public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, 
       int arg3) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onTextChanged(CharSequence arg0, int arg1, int arg2, 
       int arg3) { 
      // TODO Auto-generated method stub 

     } 

    }; 
} 
相關問題