[英]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);
}
脚步
android:visibility =“ gone”
在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.