【问题标题】:Checking checkboxes inside GridView, using custom BaseAdapter使用自定义 BaseAdapter 检查 GridView 中的复选框
【发布时间】:2015-11-05 12:51:51
【问题描述】:

早上好/下午/晚上/晚上,

在处理我的项目时,我遇到了一个问题,我似乎无法解决。我想创建一个对话框,用户可以在其中检查多个项目并使用“添加”按钮完成。

我创建了一个自定义 baseadapter 和一个自定义对话框,其中包含一个 gridview。该对话框还包含“添加”按钮。我的目标是能够检查检查了哪些项目。

BaseAdapter 的布局中包含一些文本、图像和复选框。

对话框的构造函数:

public Custom_dialog_add(Context context, List<Oefening> oefeningList) {
    super(context);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.setContentView(R.layout.custom_dialog_add);

    gridView_add = (GridView) findViewById(R.id.custom_dialog_add_gridview);
    imageAdapter_add = new ImageAdapter_Add(getContext(), oefeningList);
    gridView_add.setAdapter(imageAdapter_add);
    imageAdapter_add.notifyDataSetChanged();

    // This is the add button
    Button add = (Button) findViewById(R.id.custom_dialog_add_button);
    add.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            //Need something to do here 

        }
    });
}

来自 BaseAdapter 的 getView:

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View gridView;

    if (convertView == null) {

        gridView = new View(context);

        gridView = inflater.inflate(R.layout.custom_adapter_add, null);

        // set value into textview
        TextView textView = (TextView) gridView
                .findViewById(R.id.custom_adapter_add_textview);
        textView.setText(oefeningen.get(position).getName());

        //Checkbox
        final CheckBox checkBox = (CheckBox) gridView.findViewById(R.id.custom_adapter_add_checkbox);
        checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (checkBox.isChecked()){

                }else{
                }
            }
        });

        // set image based on selected text
        ImageView imageView = (ImageView) gridView
                .findViewById(R.id.custom_adapter_add_image);

    } else {
        gridView = (View) convertView;
    }
    return gridView;
}

我在网上找到了一些变通解决方案,例如将内容保存在 SharedPreferences 中,但必须有更有效和更简洁的方法...如果需要更多解释代码,请告诉我。

任何帮助将不胜感激!

谢谢

【问题讨论】:

    标签: android gridview checkbox dialog baseadapter


    【解决方案1】:

    你可以把它放在你的 Button CLickListener 中:

    checkGridView(gridView); //declare the GridView ad final that you could call it inside the listener
    

    并定义这个方法:

    private void checkGridView(GridView gridView) {
        for (int i = 0; i < gridView.getChildCount() ; i++ ){
            View v = gridView.getChildAt(i);
            CheckBox checkBox = (CheckBox) v.findViewById(R.id.custom_adapter_add_checkbox);
            boolean itemChecked = checkBox.isChecked();
        }
    }
    

    【讨论】:

    • 非常感谢,我知道有更好的解决方案!
    猜你喜欢
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 2013-12-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    相关资源
    最近更新 更多