【发布时间】:2016-08-22 07:37:20
【问题描述】:
我在我的应用程序中使用 searchview。在获得搜索结果以进行不同的活动后,我遇到了问题。这是显示填充了项目的列表视图的类。如果用户决定不搜索项目,他们只需单击一个项目即可将其引导至其他活动。
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 语句,这取决于位置。因此,如果我搜索“数学”,它将位于零位,如果我点击它,它会引导我进入艺术活动。它需要引导到数学活动而不是艺术活动。如果我搜索科学,它将处于零位。然后,如果我点击科学,它将引导我进入艺术活动而不是科学活动。如何从搜索结果中转到不同的活动?
【问题讨论】:
-
这可能对你有帮助
标签: android listview searchview