這裏我使用兩個數組來獲取每個選定項目的項目ID,但是我沒有在列表視圖中獲得項目的正確位置。 如果我搜索並選擇一個項目即:「MacBook Air」搜索結果顯示該項目在第一個位置,我得到的位置= 1,但實際上我需要的位置= 9。 如何獲取數組項的正確位置?我使用列表視圖進行搜索,如何獲取列表視圖上選定的項目位置?
public class MainActivity extends AppCompatActivity {
ListView lv;
EditText acc_no;
ArrayAdapter arrayAdapter;
String products[] = {"Dell Inspiron", "HTC One X", "HTC Wildfire S", "HTC Sense", "HTC Sensation XE",
"iPhone 4S", "Samsung Galaxy Note 800",
"Samsung Galaxy S3", "MacBook Air", "Mac Mini", "MacBook Pro"};
String productid[]={"12","45","95","18","45","77","66","11","74","33","44"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
JSONParser jsonParser = new JSONParser();
lv = (ListView) findViewById(R.id.list_view);
acc_no = (EditText) findViewById(R.id.acc_no_editText);
arrayAdapter = new ArrayAdapter(getBaseContext(), R.layout.list_item, products);
lv.setAdapter(arrayAdapter);
lv.setVisibility(GONE);
acc_no.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
lv.setVisibility(GONE);
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(acc_no.getText().toString().trim().equals("")){
lv.setVisibility(GONE);
}else{
lv.setVisibility(View.VISIBLE);
MainActivity.this.arrayAdapter.getFilter().filter(s);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
acc_no.setText(lv.getItemAtPosition(position).toString());
Toast.makeText(MainActivity.this, productid[position], Toast.LENGTH_SHORT).show();
lv.setVisibility(GONE);
}
});
}
使用ACC_NO或任何其他所需領域 –
搜索在原來的列表中選擇的項目,我沒有得到你抱歉.. – BraveHeart
你將有您從中篩選您記錄的原始列表。因此,從您在列表上選定的位置單擊搜索主列表中選定的項目,從您選擇的項目中搜索參數,就像現在您有'acc_no'。 –