我在我的應用程序中使用了searchview。將搜索結果轉到不同的活動後,我遇到問題。這裏是顯示填充項目的listview的類。如果用戶決定不搜索項目,他們只需點擊一個項目,然後將其引導至其他活動。獲得搜索結果後打開另一個活動
public class ShowCourses extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_courses);
Toolbar courseToolbar = (Toolbar) findViewById(R.id.courses_toolbar);
setSupportActionBar(courseToolbar);
getSupportActionBar().setTitle(R.string.courses_toolbar);
String[] subjects = {"Art", "Math", Science"};
ListAdapter subjectsAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, subjects);
ListView DisplaySubjects = (ListView) findViewById(R.id.DisplaySubjects);
DisplaySubjects.setAdapter(subjectsAdapter);
DisplaySubjects.setOnItemClickListener(
new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
switch(position){
case 0:
Intent art = new Intent(ShowCourses.this, art.class);
startActivity(art);
break;
case 1:
Intent math = new Intent(ShowCourses.this, math.class);
startActivity(math);
break;
case 2:
Intent science = new Intent(ShowCourses.this, science.class);
startActivity(science);
break;
default:
break;
}
}
});
}
@Override
protected void onResume(){
super.onResume();
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.menu_main, menu);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
return super.onCreateOptionsMenu(menu);
}
}
這是顯示搜索結果的活動。如果用戶決定搜索可以說「數學」,那麼它將顯示一個僅顯示數學的列表視圖。
public class CoursesSearchResults extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_courses_search_results);
Toolbar courseToolbar = (Toolbar) findViewById(R.id.searchCourses_toolbar); //Creates Toolbar
setSupportActionBar(courseToolbar);
String query = new String();
final Intent searchIntent = getIntent();
if(Intent.ACTION_SEARCH.equals(searchIntent.getAction())){
query = searchIntent.getStringExtra(SearchManager.QUERY);
getSupportActionBar().setTitle(query);
Toast.makeText(CoursesSearchResults.this, query, Toast.LENGTH_SHORT).show();
}
String[] subjects = {"Art", "Math", Science"};
final ArrayList<String> searchResults = new ArrayList<String>();
for(int i = 0; i < subjects.length; i++) {
if (subjects[i].toLowerCase().contains(query.toLowerCase())) {
searchResults.add(subjects[i]);
}
}
ListView courses = (ListView) findViewById(R.id.courses_search);
ListAdapter coursesAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, searchResults);
courses.setAdapter(coursesAdapter);
courses.setOnItemClickListener(
new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
switch(position){
case 0:
Intent art = new Intent(ShowCourses.this, art.class);
startActivity(art);
break;
case 1:
Intent math = new Intent(ShowCourses.this, math.class);
startActivity(math);
break;
case 2:
Intent science = new Intent(ShowCourses.this, science.class);
startActivity(science);
break;
default:
break;
}
});
}
}
我遇到的問題是因爲我使用switch語句時單擊它取決於位置的項目。所以,如果我搜索「數學」,它將處於零位,如果我點擊它,它會引導我進入藝術活動。它需要導致數學活動而不是藝術活動。如果我搜索科學,它將處於零位。那麼如果我點擊科學,它會把我引向藝術活動,而不是科學活動。我怎樣才能從搜索結果中進行不同的活動?
您可以使用此http:// stackoverflow.com/questions/14891026/get-clicked-item-from-listview –
這可能會幫助你 –