簡體   English   中英

從ArrayAdapter()中的OnClickListener更新進度條

[英]update progressbar from OnClickListener inside 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;
}

基本上我想要的是能夠在單擊ListView中的CheckBox時更新進度條狀態。

最簡單的方法是在您的活動上創建方法,這將改變您的進度條。 當您發送到適配器活動時 - 使用進度條的新值參數調用此方法。

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

這個方法主要活動。 使用參數Main mainActivity為適配器創建構造函數。 然后在你的適配器中調用這個方法mainActivity.setProgress(35); (取決於你的邏輯 - 替換你的“某些任務......”代碼)。

希望這個能對您有所幫助。

最誠摯的問候,心理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM