обновить progressbar из OnClickListener внутри ArrayAdapter()

#java #android #android-listview #android-arrayadapter

#java #Android #android-просмотр списка #android-arrayadapter

Вопрос:

У меня есть следующий код в Main.java :

 public class Main extends Activity implements AdapterView.OnItemClickListener,OnClickListener
{       private ListAdapter adapter;

    int complete;
    ProgressBar progCompleted;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mListView = (ListView) findViewById(R.id.list);

    adapter = new MyAdapter(this, R.layout.row, objects);

    mListView.setAdapter(adapter);
    mListView.setOnItemClickListener(this);

    /*
     * Complete rate
     */
    this.complete  = (int) getNumberCompleted();
    this.progCompleted = (ProgressBar) findViewById(R.id.ProgBar_completed);
    this.progCompleted.setMax(100);
    this.progCompleted.setProgress(complete);
.......
}
  

И в MyAdapter.java :

 public class MyAdapter extends ArrayAdapter<Task> {

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    rowHolder myHolder= new rowHolder();
    final int mposition = position;

    View v = convertView;

    if (v == null) {
        v = mInflater.inflate(R.layout.row, null);

            myHolder.check_button = (CheckBox) v.findViewById(R.id.CheckButton);
            if(myHolder.check_button != null){
                myHolder.check_button.setChecked(t.isCompleted());

                OnClickListener l =new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        CheckBox cb = (CheckBox) v;                 
                                            if (cb.isChecked())
                                            {
                                               some task... 
                                             }


                    }
                }; 

                myHolder.check_button.setOnClickListener(l);
            }
    }

    return v;
}
  

Итак, в основном я хочу иметь возможность обновлять статус progressbar, когда я нажимаю флажок в ListView.

Комментарии:

1. Хорошо, что пробовали? Что не работает?

2. Да, здесь нет ничего, что нужно исправить. Что такое «какая-то задача …»?

3. Мне не нужно было исправлять код, но обновить ProgressBar из метода OnClickListener в классе MyAdapter.

Ответ №1:

Самый простой способ — создать метод для вашей активности, который изменит ваш индикатор выполнения. Как вы отправили своему адаптеру действие — вызовите этот метод с параметром нового значения для индикатора выполнения.

 public void setProgress(int mProgressStatus){progCompleted.setProgress(mProgressStatus);} 
  

Этот метод в основном действии.
Создайте конструктор для вашего адаптера с параметром Main MainActivity.
А затем вызовите в своем адаптере этот метод mainActivity.setProgress(35); (зависит от вашей логики — замените свой код «some task …»).

Надеюсь, это вам поможет.

С наилучшими пожеланиями, Psycho