
Есть приложение, отображающее ListView.
Через самодельный адаптер идет сборка ListView. В каждом элементе ListView стоит элемент хронометр.
Элементы ListView берутся из ArrayList пользователей(пока ArrayList сделан статично).
Задачи:
Клик на элемент списка запускает секундомер. При этом:
1. Остальные секундомеры останавливаются
2. Иконка запуска секундомера меняется на квадратик
При клике на элемент по которому секундомер запущен останавливает секундомер.
Метод getView адаптера:
public View getView(int position, View convertView, ViewGroup parent) {
User p = userAdapterArrayList.get(position);
View usersView = convertView;
if (usersView == null) {
usersView = LayoutInflater.from(context).inflate(R.layout.user_layout, null);
}
TextView tvNname = (TextView) usersView.findViewById(R.id.name);
tvNname.setText(p.getName());
Chronometer viewChrono = (Chronometer) usersView.findViewById(R.id.userChronometer);
p.setChronoUser(viewChrono);
Класс User:
public class User {
private String name;
private boolean start;
private Chronometer chronoUser;
public User() {
}
public Chronometer getChronoUser() {
return chronoUser;
}
public void stopChrono (){
chronoUser.stop();
}
public void setChronoUser(Chronometer chronoUser) {
this.chronoUser = chronoUser;
}
public boolean isStart() {
return start;
}
public void setIsStarted(boolean isStarted) {
this.start = isStarted;
}
public void setTrue() {
this.start = true;
}
public void setFalse() {
this.start = false;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
onCreate:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<User> usersArrayList = createUsers();
ListView listView = (ListView) findViewById(R.id.list);
listView.setAdapter(new UserAdapter(usersArrayList, this));
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Chronometer chr = (Chronometer) view.findViewById(R.id.userChronometer);
ImageView ivStatus = (ImageView) view.findViewById(R.id.statusImage);
if (user.isStart()) {
chr.stop();
ivStatus.setImageResource(R.drawable.start);
user.setFalse();
} else {
chr.start();
ivStatus.setImageResource(R.drawable.stop);
user.setTrue();
}
Возникла проблема с остановкой всех секундомеров!!!
Пробовал в онклике делать:
for (User userr : usersArrayList) {
userr.stopChrono();
}
Так же пробовал в адаптере давать хронометрам метки, но тоже не сработало.
Кто подскажет как можно реализовать остановку всех секундомеров, буду благодарен.
Спасибо.



