#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