繁体   English   中英

在CustomAdapter中隐藏或显示CheckBox

[英]Hide or show CheckBox in CustomAdapter

我在我的应用程序中使用了databse。 我可以创建一些“笔记”,然后定义类型:家庭作业或测试。

然后,我在ListView中显示它。 但是,当创建该行时,我想检查是否选择“家庭作业”作为类型,如果这样做,我会在listView的该行中添加一个复选框,但是如果选择“测试”,我会不显示CheckBox。

然后,使用复选框,可以使用cb.isChecked()将作业设置为“完成”或“未完成”。 但是首先我必须只显示复选框,如果它是一项家庭作业。 但我不知道如何检查。

我怎样才能做到这一点 ?

这是我的CustomAdapter类

public class CustomAdapterJalons extends SimpleCursorAdapter {

private Context mContext;
private Context appContext;
private int layout;
private Cursor cr;
private final LayoutInflater inflater;

public CustomAdapterJalons(Context context, int layout, Cursor c, String[] from, int[] to) {
    super(context, layout, c, from, to);
    this.layout = layout;
    this.mContext = context;
    this.inflater = LayoutInflater.from(context);
    this.cr = c;
}

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    return inflater.inflate(layout, null);
}

@Override
public void bindView(View view, final Context context, final Cursor cursor) {
    super.bindView(view, context, cursor);

    LinearLayout root_view = (LinearLayout)view.findViewById(R.id.item_root);

    root_view.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            //method
        }
    });

   final int position = cursor.getPosition();

    cursor.moveToPosition(position);

    int devoir = cursor.getInt(3);
    int evaluation = cursor.getInt(4);
    CheckBox cbdevoir = (CheckBox)view.findViewById(R.id.CBDevoir);


    if(devoir==1)
    {
     cbdevoir.setVisibility(View.VISIBLE);
    }
   if(evaluation==1)
   {
       cbdevoir.setVisibility(View.INVISIBLE);
   }
    }

}

感谢大伙们 !

你必须在bindview方法中检查一下

@Override
public void bindView(View view, final Context context, final Cursor cursor) {
    super.bindView(view, context, cursor);

    LinearLayout root_view = (LinearLayout)view.findViewById(R.id.item_root);

    root_view.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            //method
        }
    });

   final int position = cursor.getPosition();

    cursor.moveToPosition(position);

    int devoir = cursor.getInt(3);
    int evaluation = cursor.getInt(4);
    CheckBox cbdevoir = (CheckBox)view.findViewById(R.id.CBDevoir);


    if(devoir==1)
    {
     cbdevoir.setVisibility(View.VISIBLE);
    }
    else{
    cbdevoir.setVisibility(View.INVISIBLE);
    }

    }

您的状况不佳。 在您的适配器bindView()方法中:

采用:

if(devoir == 1) {
    cbdevoir.setVisibility(View.VISIBLE);
} else {
    cbdevoir.setVisibility(View.GONE);
}

代替:

if(devoir==1)
{
    cbdevoir.setVisibility(View.VISIBLE);
}
if(evaluation==1)
{
    cbdevoir.setVisibility(View.INVISIBLE);
}

脚步

  1. 在XML行中,使复选框处于隐藏状态

android:visibility =“ gone”

  1. 在bindview方法中

     @Override public void bindView(View view, final Context context, final Cursor cursor) { super.bindView(view, context, cursor); LinearLayout root_view=LinearLayout)view.findViewById(R.id.item_root); root_view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //method } }); CheckBox cbdevoir = (CheckBox)view.findViewById(R.id.CBDevoir); If(type.equals("Homework"){ cbdevoir.setVisibility(View.VISIBLE) } else{ cbdevoir.setVisibility(View.GONE); } if(cbdevoir.isChecked()) { //method to set the homework done } else { //method to set the homework undone } } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM