java - 从 ArrayAdapter() 内的 OnClickListener 更新进度条

标签 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 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 中的复选框时能够更新进度条状态。

最佳答案

最简单的方法是在您的 Activity 上创建方法,这将改变您的进度条。当您发送到适配器 Activity 时 - 使用进度条的新值参数调用此方法。

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

此方法用于主要 Activity 。 使用参数 Main mainActivity 为适配器创建构造函数。 然后在您的适配器中调用此方法 mainActivity.setProgress(35);(取决于您的逻辑 - 替换您的“某些任务...”代码)。

希望这会对您有所帮助。

致以最诚挚的问候, 心理

关于java - 从 ArrayAdapter() 内的 OnClickListener 更新进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8030346/

相关文章:

Android ListView 行 View 左右边框拉伸(stretch)到高度

Android 应用小部件 ListView onclick 监听器

java - 如何在不拆分字符串的情况下检查字符串是否具有某种模式?

java - spring boot sql数据库DML和DDL脚本

java - 如何设计相互依赖的可扩展类型基础设施

java - NaN 等于 0 吗?

android - Facebook 共享对话框中的错误

android - 在 Android 上模拟触摸屏事件

java - 如何对编辑文本记录的数据进行操作

android - 当我在滚动 Android Studio 后动态更新时,ListView 不会保留状态