Возможно, nullPointerException вызвано тем, что вы находитесь в сенсорном режиме, setSelection на самом деле не выбирает элемент в listView, когда вы находитесь в сенсорном режиме, он просто «смотрит» на него, если вы понимаете, о чем я. *
Вы должны создать настроенный адаптер (создав класс, расширяющий используемый адаптер:])
И в своем пользовательском классе адаптера вы должны переопределить метод getView (int position, View convertView, ViewGroup parent), например так:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null)
convertView = inflater.inflate(android.R.layout.simple_list_item_1, null);
String content = lista.get(position).toString();
TextView text = (TextView) convertView.findViewById(android.R.id.text1);
text.setText(content);
convertView.setBackgroundColor(lista.get(position).getBackgroundColor());
return convertView;
}
В коде переменная "lista" представляет собой список некоторых элементов, которые есть в моем адаптере.
Итак, когда вы закончите выбирать свой элемент, вы должны вызывать getView для каждого вашего элемента, или вы можете вызвать метод invalidateViews из вашего listView до того, как вы установите выбор (если вы вызываете invalidateViews после выбора, выбор будет проигнорирован (по крайней мере, в сенсорном режиме:]))