在 CustomAdapter 中隐藏或显示 CheckBox
Hide or show CheckBox in CustomAdapter
我在我的应用程序中使用数据库。我可以创建一些 "notes" ,并定义类型:家庭作业或测试。
然后我将它显示在 ListView 中。
但是,当创建该行时,我想检查我是否选择 "Homework" 作为类型,如果我选择了,我会在我的 listView 中的该行添加一个复选框,但如果我选择 "Test", 我不显示复选框。
然后,使用复选框,我可以使用 cb.isChecked() 将作业设置为完成或未完成。但首先,如果它是家庭作业,我必须只显示复选框。但是不知道怎么查..
我该怎么做?
这是我的 CustomAdapter class
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);
}
}
步骤
- 在 XML 行中隐藏复选框
android:能见度="gone"
绑定视图方法
@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
}
}
你的情况不对。在您的适配器 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);
}
我在我的应用程序中使用数据库。我可以创建一些 "notes" ,并定义类型:家庭作业或测试。
然后我将它显示在 ListView 中。 但是,当创建该行时,我想检查我是否选择 "Homework" 作为类型,如果我选择了,我会在我的 listView 中的该行添加一个复选框,但如果我选择 "Test", 我不显示复选框。
然后,使用复选框,我可以使用 cb.isChecked() 将作业设置为完成或未完成。但首先,如果它是家庭作业,我必须只显示复选框。但是不知道怎么查..
我该怎么做?
这是我的 CustomAdapter class
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);
}
}
步骤
- 在 XML 行中隐藏复选框
android:能见度="gone"
绑定视图方法
@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 } }
你的情况不对。在您的适配器 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);
}