Совет в разработке приложения Android.

Сергей Кудишов

Есть приложение, отображающее 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();
}

Так же пробовал в адаптере давать хронометрам метки, но тоже не сработало.
Кто подскажет как можно реализовать остановку всех секундомеров, буду благодарен.
Спасибо.

Сергей Кудишов больше 1 года назадСпасибо 1
1 чел.