2016-12-21 36 views
0

我想要在篩選ListView中選擇物品時獲取原始位置。 這是我的簡單代碼。在Android中設置已過濾ListView中物品的原始位置

我的問題是把舊位置而不是新的過濾後的列表視圖:

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然後每過濾視圖位置一直也改變根據的篩選視圖量。因此,如果您想在適配器上形成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

你是否遵循任何教程...共享鏈接.....瞭解。 –

相關問題