2015-12-13 5 views
-1

Я создаю приложение с поисковым фильтром и интерактивным списком. Фильтр поиска работает, но не доступен для просмотра кликов.search filter with clickable list view

public class MainActivity extends Activity { 

    private ListView lv; 

    ArrayAdapter<String> adapter; 

    EditText inputSearch; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     String products[] ={"1","1A","1B","1C","1D","2","2A","3","3A","3B","3C","3D","4A","4","5","5A","6","6A","6B","7","8","8B","9","10","10A","11","12","12A","13","13A","13D","14","14A","14B","15","15A","15C","15D","15F","16","16A","16D","17","17A","17B","17C","17D","17E","17F","18","19","20","20A","20B","20C","20D"}; 


     lv = (ListView) findViewById(R.id.list_view); 
     inputSearch = (EditText) findViewById(R.id.inputSearch); 

     adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, products); 
     lv.setAdapter(adapter);  


     inputSearch.addTextChangedListener(new TextWatcher() { 

      @Override 
      public void afterTextChanged(Editable s) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, 
        int count) { 
       // TODO Auto-generated method stub 
       MainActivity.this.adapter.getFilter().filter(s); 
      }}); 




     //the code for clicking on the list view 

     public void onItemClick(AdapterView<?> parent, View view, 
          int position, long id) { 
        // TODO Auto-generated method stub 

       String routes =((TextView)view).getText().toString(); 

       Intent i = new Intent(getApplicationContext(), SingleListItem.class); 
        // sending data to new activity 

        i.putExtra("routes", routes); 
        startActivity(i); 
       }}); 
      } 

это singlelistitem класс

public class SingleListItem extends Activity{ 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.setContentView(R.layout.single_list_item_view); 

    TextView txtProduct = (TextView) findViewById(R.id.routes_lab); 

    Intent i = getIntent(); 
    // getting attached intent data 
    String product = i.getStringExtra("routes"); 

    txtProduct.setText(product); 
+0

каким образом это приложение «не работает»? –

+0

мое приложение содержит просмотр списка и фильтр поиска. Фильтр поиска будет искать элементы из списка, и при нажатии на выбранный элемент он должен дать мне дополнительную информацию на другой странице. Проблема в том, что после поиска, нажав на элемент, приложение перестает работать. – akash

ответ

0

В соответствии с вашим кодом, я даю следующее решение.

Примечание: выполните некоторые изменения в коде.

Step 1:lv.setOnItemClickListener(this); 

// lv = (ListView) findViewById(R.id.list_view); add step 1 below of this in your code 


Step 2:public class MainActivity extends Activity implements OnItemClickListener 

Шаг 3: Пожалуйста, дайте мне знать, что она работает или нет, так что я могу помочь вам

+0

Я внедрил это изменение, но теперь просмотр с интерактивным списком работает, но не фильтр поиска – akash

+0

chsnge этот код: MainActivity.this.adapter.getFilter(). Filter (s); в \t \t \t \t \t \t Строка текста = inputSearch.getText() ToString(). \t \t \t \t адаптер.фильтр (текст); – ManiTeja

+0

проверьте также следующую ссылку, если вам нужно уточнить: http: //androidtrainningcenter.blogspot.in/2013/04/implementing-search-functionality.html – ManiTeja