2017-02-21 42 views
0

我添加了textBox到我的应用程序来过滤ListView项目,所以当我在文本框中键入文本时,它通常过滤,但是当我尝试选择过滤项目时,它会打开原始位置的活动在过滤器之前而不是过滤后的过滤器上。我的过滤列表项目打开错误活动

@Override 
public void onCreate(Bundle savedInstanceState) { 

super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 

AdView mAdView = (AdView) findViewById(R.id.adView); 
AdRequest adRequest = new AdRequest.Builder().build(); 
mAdView.loadAd(adRequest); 

inputSearch = (EditText) findViewById(R.id.inputSearch); 

String[] ciwaananadaGabayada = getResources().getStringArray(R.array.gabayada_array); 
mListView = (ListView) findViewById(R.id.listView1); 
// Adding items to listview 
adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.gabay_item, ciwaananadaGabayada); 
mListView.setAdapter(adapter); 
mListView.setTextFilterEnabled(true); 

//Enabling Search Filter 
inputSearch.addTextChangedListener(new TextWatcher() { 

    @Override 
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
    // When user changed the text 
    MainActivity.this.adapter.getFilter().filter(charSequence); 
    adapter.notifyDataSetChanged(); 
    //adapter.getFilter().filter(charSequence); 
    } 

    @Override 
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

    } 


    @Override 
    public void afterTextChanged(Editable editable) { 

    } 
}); 

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 


     switch (position) { 
      case 0: 
       Intent newActivity = new Intent(MainActivity.this, Xuseenow_caqligu.class); 
       startActivity(newActivity); 
       break; 

      case 1: 
       Intent newActivity1 = new Intent(getApplicationContext(), dhurwaa_adhiga.class); 
       startActivity(newActivity1); 
       break; 

      case 2: 
       Intent newActivity2 = new Intent(getApplicationContext(), xuseenowAqoonXume.class); 
       startActivity(newActivity2); 
       break; 
+0

把你的适配器类 –

+0

@CoDFather我在哪里把我的适配器类 – Suhayb

+0

把它放在这里! –

回答

0

您正在使用OnItemClickListener位置假设您的列表有3个元素,当你筛选器列表和你的列表中显示的一个项目,然后你点击该项目在这种情况下,位置在非同一,而它的实际位置过滤器列表列表是3或2,所以在这种情况下总是得到0的位置。

为此,您需要使用您拥有的位置来获取过滤列表的DataItem,然后检查您想要打开DataItem中具有的值的活动。

+0

请你能给你详细的答案吗? – Suhayb

+0

请勿在开关盒中使用位置。您应该获得所选位置的数据项目,然后与您想要打开的相应活动进行比较。 –

+0

请告诉我如何获取选定位置的数据项。 – Suhayb

相关问题