2016-12-21 3 views
0

Я хочу получить исходное положение, когда я выбираю элемент в отфильтрованном ListView. Это мой простой код.Установить исходное положение элемента в отфильтрованном ListView на Android

Моя проблема установить старую позицию не новый в фильтрованной списке:

public class MainActivity extends AppCompatActivity { 
    EditText sr; 
    ListView lv_sr; 
    String[] titre; 
    ArrayAdapter<String> adapter; 

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

    sr = (EditText) findViewById(R.id.sr); 
    lv_sr = (ListView) findViewById(R.id.lv_sr); 
    titre = getResources().getStringArray(R.array.titre); 

    adapter = new ArrayAdapter<String>(this, R.layout.row_itme, R.id.row_text, titre); 

    lv_sr.setAdapter(adapter); 
    initEvent(); 
} 

private void initEvent() { 

    sr.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      MainActivity.this.adapter.getFilter().filter(s); 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 


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

      Intent km = new Intent(MainActivity.this, Webhtml.class); 

      km.putExtra("page",position); -------- this is my problem 
      startActivity(km); 

     } 
    }); 

    } 
} 
+0

вы можете поделиться адаптер? –

ответ

1

Когда вы фильтровать ListView, то каждый фильтруется View положение было также меняться в зависимости от количества отфильтрованных просмотров. Поэтому, если вы хотите получить исходную позицию (предыдущая позиция или позиция перед фильтрацией), сформируйте OnItemClickListener на адаптере. Вы не можете это получить.

Вы можете создать скрытое поле для фиксации исходного положения.

String itemName = (String) parent.getItemAtPosition(position); 
int position_fo_item = Arrays.asList(titre).indexOf(itemName); 

Intent km = new Intent(MainActivity.this, Webhtml.class); 
km.putExtra("page",position_fo_item); 
startActivity(km); 

Если он не работает, то создайте еще один массив как «titre_original» и назначить его как «титр», а также. затем использовать его, чтобы получить позицию как

String[] titre_original; 
titre_original = getResources().getStringArray(R.array.titre);  
int position_fo_item = Arrays.asList(titre_original).indexOf(itemName); 

Это, безусловно, работать ...

+0

Спасибо за этот ответ:/но как я могу это создать! если у вас есть время –

+0

вы можете поделиться своим адаптером? –

+0

вы следуете за любым учебником ... поделитесь ссылкой ..... чтобы понять. –

Смежные вопросы