У меня есть список с именами и мобильными номерами в виде двух текстовых изображений. OnItemClickListener возвращает другой элемент onclick. Это происходит непоследовательно - иногда он выбирает правильный элемент, но иногда это не так.OnClick неправильный выбор получателя
private void showCustomers(String json) {
ParseCustomer parseCustomer = new ParseCustomer(json);
parseCustomer.parseJSON();
lv = (ListView) findViewById(R.id.list_customerInfo);
inputSearch = (EditText) findViewById(R.id.inputSearch);
adapter = new ArrayAdapter<String>(this,R.layout.list_customerinfo, R.id.customer_name,ParseCustomer.name);
final List<Map<String, String>> cust = new ArrayList<Map<String, String>>();
Map<String,String> map;
int counter = ParseCustomer.name.length;
for (int i=0;i<counter; i++){
map = new HashMap<>();
map.put("name",ParseCustomer.name[i]);
map.put("mobile",ParseCustomer.mobile_no[i]);
cust.add(map);
}
newAdapter = new SimpleAdapter(this,cust,R.layout.list_customerinfo,new String[]{"name","mobile"},new int[]{R.id.customer_name,R.id.customer_mobile});
lv.setAdapter(newAdapter);
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
lv.setVisibility(View.INVISIBLE);
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
lv.setVisibility(View.VISIBLE);
}
@Override
public void afterTextChanged(Editable s) {
AddInvEst.this.newAdapter.getFilter().filter(s);
lv.setVisibility(View.VISIBLE);
}
});
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Map custSel = cust.get(position);
custSelected = (String) custSel.get("name")+" "+ custSel.get("mobile");
inputSearch.setText(custSelected);
lv.setVisibility(View.GONE);
Toast.makeText(AddInvEst.this, "Your selected customer is "+custSelected, Toast.LENGTH_LONG).show();
}
});
}
У меня есть текстовое поле редактирования, которое я использую для поиска или фильтрации списка. Может ли кто-нибудь указать мою ошибку или направить меня к лучшему решению? Спасибо :)
проблема с фильтром поиска, попробуйте 'Map custSel = newAdapter.getItem (положение);' вместо 'Map custSel = cust.get (положение) ; ' –
Укажите класс адаптера – Jas
, почему' lv.setVisibility (View.GONE); '? – Amy