2016-07-14 2 views
-1

Ich habe versucht, eine SearchView mit nur einem einfachen ListView ohne Bilder zu erstellen, und es hat funktioniert. Aber nachdem ich Bilder zur Listenansicht hinzugefügt habe, funktioniert das SearchView nicht. Ich bin neu, also bitte helfen. Danke im Voraus.Wie erstellt man eine SearchView in Actionbar für eine ListView, die Bilder verwendet?

Das ist mein Hauptcode

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

Post Code hier für eine bessere Hilfe suchen – Vickyexpert

Antwort

0

Kasse this, Das ist genau das, was Sie für ,, Fügen Sie einfach Bild in Listenansicht

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 

     } 

    }; 
} 
Verwandte Themen