- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想让它让用户可以通过 ListView 搜索所需的项目。我已经创建了一个没有搜索实现的可检查 ListView。我尝试使用 EditText 和 TextChangedListener 添加搜索。这对于普通的 ListView 工作正常,但由于每次用户键入时此方法都会创建一个新的适配器,因此检查的项目会丢失。
我的问题:
一个。有没有办法在维护相同适配器的同时搜索 ListView?
B.有没有办法使用我当前使用 TextChangedListener 的方法,但保持选中的项目?
最佳答案
您可以构建自己的包含 ListView 元素字段的类,并添加一个字段 (isChecked)。当您重新创建适配器时,您使用已经创建的对象并保存选中状态,并且在每一行的 getview 中您可以通过此属性选中\取消选中此项
这是我的自定义复选框,您可以使用它并根据需要进行修改,我认为它可以满足您的目的(我从我的应用程序中获取此代码,您可以在 this app 中查看它的工作原理):
package ru.human.notification;
import java.util.ArrayList;
import android.content.Context;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
import android.widget.CheckedTextView;
public class CustomCheckBox extends CheckedTextView
{
private int CHECKED_IMAGE;
private int UNCHECKED_IMAGE;
private main_full parent;
private ArrayList<View> viewsToCheck;
private int msgType;
public void setParent(main_full parent, int msgType)
{
this.parent = parent;
this.msgType = msgType;
setOnLongClickListener(longClickListner);
}
public void addViewToCheck(View view)
{
this.viewsToCheck.add(view);
}
OnLongClickListener longClickListner = new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
if (parent != null && isChecked())
parent.showTimeDialog(msgType);
return true;
}
};
OnClickListener listener = new OnClickListener()
{
public void onClick(View v)
{
// TODO Auto-generated method stub
if (!isChecked())
{
setTextColor(getResources().getColor(R.color.green));
setPaintFlags(0);
setChecked(true);
setCheckMarkDrawable(CHECKED_IMAGE);
if (parent != null)
parent.showTimeDialog(msgType);
}
else
{
setTextColor(getResources().getColor(R.color.lightgrey));
setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG);
setChecked(false);
setCheckMarkDrawable(UNCHECKED_IMAGE);
}
for (View view: viewsToCheck)
view.setVisibility(isChecked()?View.VISIBLE:View.GONE);
}
};
public CustomCheckBox(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
setOnClickListener(listener);
System.out.println("1");
// TODO Auto-generated constructor stub
// TODO mmmm
}
public CustomCheckBox(Context context, AttributeSet attrs)
{
super(context, attrs);
viewsToCheck = new ArrayList<View>();
String xmlns="http://schemas.android.com/apk/res/ru.human.notification";
setOnClickListener(listener);
System.out.println("2");
int k = R.drawable.alarmgrey;
CHECKED_IMAGE = attrs.getAttributeResourceValue(xmlns, "checkedImage", 404);
UNCHECKED_IMAGE = attrs.getAttributeResourceValue(xmlns, "uncheckedImage", 404);
setCheckMarkDrawable(UNCHECKED_IMAGE);
setTextColor(getResources().getColor(R.color.lightgrey));
setTextSize(18f);
setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG);
// setChecked(false);
System.out.println(CHECKED_IMAGE +" " + UNCHECKED_IMAGE + " " +k);
// TODO Auto-generated constructor stub
}
public CustomCheckBox(Context context)
{
super(context);
final Context parent = context;
System.out.println("3");
// TODO Auto-generated constructor stub
setOnClickListener(listener);
}
}
属性.xml:
</declare-styleable>
<declare-styleable name="CustomCheckBox">
<attr name="uncheckedImage" format="integer"/>
<attr name="checkedImage" format="integer"/>
</declare-styleable>
</resources>
用法:
<ru.human.notification.CustomCheckBox
android:id="@+id/delayed"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/settingsbutton"
android:checked="false"
customcheckbox:checkedImage="@drawable/clockcolor"
android:text="@string/delay"
customcheckbox:uncheckedImage="@drawable/clockgrey" />
将此 View 放入 ListView 并创建 setChecked 方法(代码与 onClick 方法中的代码相同)。不要注意 setParent 和 addViewToCheck 方法 - 它们是在我的应用程序中控制 UI 的方法。
关于Android Search Checkable ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11663693/
我想让它让用户可以通过 ListView 搜索所需的项目。我已经创建了一个没有搜索实现的可检查 ListView。我尝试使用 EditText 和 TextChangedListener 添加搜索。这
如何使单选按钮的操作更像复选框?我需要单选按钮的功能,但需要能够取消选择。 最佳答案 通常这是通过添加另一个选项“无”来实现的。用户不会期望单击选定的单选按钮会取消选择它,因为这不是正常行为。 另一个
问题:当我清除并重新填充 ListView 时,如果先前检查了某个项目,则也会检查同一索引处的项目。如果添加到适配器的元素数量 main@830013232224, prio=5, in group
我的 xml 代码是: 我遇到的问题是,当我将 group_1_box_1 的状态更改为 true 时,它不仅将 group_1_box_2 设置为
我正在编写一个 Qt Gui,我正在尝试实现一个新功能,我现在知道我想要达到的精确结果,但不知道如何编写它。我正在尝试添加一个可检查按钮,该按钮将运行一个功能,该函数只有在未选中该按钮时才会停止,但是
我有一个带有 OxyPlot View 的 WPF 窗口。我正在尝试根据情节的动态生成的可检查上下文菜单添加每系列隐藏/显示功能。这个想法是有一个 ObservableCollection对象,绑定(
我想制作一个 QToolBar,其中包含一些操作,每个操作都是“可检查的”(也就是说,我在创建每个操作后调用 setCheckable(true),这使按钮处于按下状态点击后)。 我能想到的“取消选中
我是一名优秀的程序员,十分优秀!