2017-04-25 2 views
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; 
} 

}

答えて

0

変更:

String text = ((TextView) view).getText().toString(); 
    if(text.equals("String_text_of_1st_position")) { 
Intent myIntent1 = new Intent(view.getContext(), Product.class); 
        startActivityForResult(myIntent1, 0); 

} 
:次のコードで

if (position == 0) { 
       Intent myIntent1 = new Intent(view.getContext(), Product.class); 
       startActivityForResult(myIntent1, 0); 
      } 

関連する問題