Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从ArrayAdapter()内的OnClickListener更新progressbar_Java_Android_Android Listview_Android Arrayadapter - Fatal编程技术网

Java 从ArrayAdapter()内的OnClickListener更新progressbar

Java 从ArrayAdapter()内的OnClickListener更新progressbar,java,android,android-listview,android-arrayadapter,Java,Android,Android Listview,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 savedInstan

我在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;
}
公共类MyAdapter扩展了ArrayAdapter{
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
rowHolder myHolder=新的rowHolder();
最终位置=位置;
视图v=转换视图;
如果(v==null){
v=最小充气量(R.layout.row,空);
myHolder.check_button=(复选框)v.findViewById(R.id.CheckButton);
if(myHolder.check_按钮!=null){
myHolder.check_按钮.setChecked(t.isCompleted());
OnClickListener l=新的OnClickListener(){
@凌驾
公共void onClick(视图v){
复选框cb=(复选框)v;
if(cb.isChecked())
{
一些任务。。。
}
}
}; 
myHolder.check_按钮.setOnClickListener(l);
}
}
返回v;
}

因此,基本上我想要的是,当我单击ListView中的复选框时,能够更新progressbar状态。

最简单的方法是在您的活动上创建方法,该方法将更改进度条。当您发送到适配器活动时,请使用进度条的新值参数调用此方法

public void setProgress(int mProgressStatus){progCompleted.setProgress(mProgressStatus);} 
这种方法主要依赖于活动。 使用参数Main Main activity为适配器创建构造函数。 然后在适配器中调用此方法
mainActivity.setProgress(35);
(取决于您的逻辑-替换“some task…”代码)

希望这对你有帮助

致以最良好的祝愿,
Psycho

好的,你尝试了什么?什么不起作用?是的,这里没有什么需要修复的。什么是“某个任务…”?我不需要修复代码,但需要从MyAdapter类中的OnClickListener方法更新ProgressBar。