ここでは、2つの配列を使用して各選択項目の項目IDを取得していますが、リスト表示で項目の正しい位置を取得できませんでした。 アイテムを検索して選択すると、「MacBook Air」の検索結果でアイテムが最初の位置に表示され、位置= 1が表示されますが、実際には位置= 9が必要です。 配列アイテムの正しい位置を取得する方法は?リストビューを検索目的に使用していますが、リストビューで選択したアイテムの位置を取得する方法はありますか?
あなたlv.setonItemClickで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'を持っています。 –