0
リストビュー上のアイテムをクリックして新しいアクティビティを開くオプション付きのリストビューがあり、検索オプションもあります。私が直面している問題は、アイテムが検索されて見つかったときに特定のアクティビティを開くことです。ポジションナンバーは自動的に0に変わり、私が検索して見つけたアイテムは、自分のアクティビティではなくポジション0のアクティビティのアクティビティを開きます。問題は理解できますが、解決できません。助けが必要!コード下リストビューの変更後にアイテムの位置が変更されたために必要なアクティビティが開かれないandroid
package dev.edmt.advancedsearchbar;
import android.content.Intent;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.ListViewCompat;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.miguelcatalan.materialsearchview.MaterialSearchView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
MaterialSearchView searchView;
ListView lstView;
final String[] values =
{"Android ListView Item 1",
"Android ListView Item 2",
"Simple List View In Android",
"List View onClick Event",
"Android List View OnItemClickListener",
"Open New Activity When ListView item Clicked",
"List View onClick Source Code",
"List View Array Adapter Item Click",
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Material Search");
toolbar.setTitleTextColor(Color.parseColor("#FFFFFF"));
lstView = (ListView) findViewById(R.id.lstView);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, values);
lstView.setAdapter(adapter);
searchView = (MaterialSearchView)findViewById(R.id.search_view);
searchView.setOnSearchViewListener(new MaterialSearchView.SearchViewListener() {
@Override
public void onSearchViewShown() {
}
@Override
public void onSearchViewClosed() {
//If closed Search View , lstView will return default
lstView = (ListView)findViewById(R.id.lstView);
ArrayAdapter adapter = new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1, values);
lstView.setAdapter(adapter);
}
});
searchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
if(newText != null && !newText.isEmpty()){
List<String> lstFound = new ArrayList<String>();
for(String item:values){
if(item.toString().toLowerCase().contains(newText.toString().toLowerCase()))
lstFound.add(item);
}
ArrayAdapter adapter = new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,lstFound);
lstView.setAdapter(adapter);
}
else{
//if search text is null
//return default
ArrayAdapter adapter = new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,values);
lstView.setAdapter(adapter);
}
return true;
}
});
lstView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if (position == 0) {
Intent myIntent1 = new Intent(view.getContext(), Product.class);
startActivityForResult(myIntent1, 0);
}
if (position == 1) {
Intent myIntent = new Intent(view.getContext(), test.class);
startActivityForResult(myIntent, 0);
}
if (position == 2) {
Intent myIntent = new Intent(view.getContext(), test.class);
startActivityForResult(myIntent, 0);
}
if (position == 3) {
Intent myIntent = new Intent(view.getContext(), test.class);
startActivityForResult(myIntent, 0);
}
if (position == 4) {
Intent myIntent = new Intent(view.getContext(), test.class);
startActivityForResult(myIntent, 0);
}
if (id == 5) {
Intent myIntent5 = new Intent(view.getContext(), test.class);
startActivityForResult(myIntent5, 0);
}
if (position == 6) {
Intent myIntent = new Intent(view.getContext(), test.class);
startActivityForResult(myIntent, 0);
}
if (position == 7) {
Intent myIntent = new Intent(view.getContext(), test.class);
startActivityForResult(myIntent, 0);
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_item,menu);
MenuItem item = menu.findItem(R.id.action_search);
searchView.setMenuItem(item);
return true;
}
}