Я не уверен, почему это не работает, но мой код должен делать очень просто.
У меня есть ListView с цветом текста по умолчанию (BLACK) и шрифтом (MONOSPACE), которые я объявил в getView(), поэтому все работает хорошо, когда представление создается.
Когда я выбираю элемент из списка, он должен изменить цвет текста на КРАСНЫЙ и шрифт на МОНОПРОСТРАНСТВЕННЫЙ и ЖИРНЫЙ, и если я щелкну другой элемент, он изменит этот элемент на КРАСНЫЙ и ЖИРНЫЙ и вернет предыдущий текст на ЧЕРНЫЙ и НОРМАЛЬНЫЙ. Это работает просто отлично, но если я прокручиваю от КРАСНОГО и ЖИРНОГО текста до тех пор, пока он не будет виден, а затем прокручиваю назад, текст больше не КРАСНЫЙ и ЖИРНЫЙ, а ЧЕРНЫЙ и НОРМАЛЬНЫЙ.
Помощь приветствуется! Спасибо
private ArrayList<String> list;
private ListView myView;
private ListAdapter listAdapter;
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
list = new ArrayList<>();
for (int i = 0; i < 20; i++) {
list.add("Hello world " + i);
}
listAdapter = new ListAdapter();
myView = (ListView) findViewById(R.id.myList);
myView.setAdapter(listAdapter);
myView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView tv = (TextView) view.findViewById(R.id.textView);
tv.setTextColor(Color.RED);
tv.setTypeface(Typeface.MONOSPACE, Typeface.BOLD);
}
});
}
public class ListAdapter extends BaseAdapter {
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
view = getLayoutInflater().inflate(R.layout.listview_layout, null);
TextView txt = (TextView) view.findViewById(R.id.textView);
txt.setText(list.get(i));
txt.setTextColor(Color.BLACK);
txt.setTypeface(Typeface.MONOSPACE, Typeface.NORMAL);
return view;
}
}