如果您只想向用户提供他们已检查项目的反馈,则您可能不需要将 TextView 设置为“已单击”。另一种方法可能是执行以下操作。请注意,如果您仍然需要,此方法还将帮助您将文本视图设置为“单击”。
要检查一个项目,我会将您的扩展RelativeLayout
如下:
public class CheckableRelativeLayout extends RelativeLayout implements Checkable {
private boolean mChecked;
private static final int[] CHECKED_STATE_SET = {
android.R.attr.state_checked
};
public CheckableRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected int[] onCreateDrawableState(int extraSpace) {
final int[] drawableState = super.onCreateDrawableState(extraSpace + 1);
if (isChecked()) {
mergeDrawableStates(drawableState, CHECKED_STATE_SET);
}
return drawableState;
}
public void toggle() {
setChecked(!mChecked);
}
public boolean isChecked() {
return mChecked;
}
public void setChecked(boolean checked) {
if (mChecked != checked) {
mChecked = checked;
refreshDrawableState();
}
}
}
然后你可以调用parent.setItemChecked(position,true);
in onItemClick
which 实际上将项目设置为在AdapterView
.
然后,这样做将允许您在扩展上设置背景选择器,RelativeLayout
并且项目将执行选择、按下、选中等操作。但是,您不需要使用背景选择器。
还有更多,您可以随时查看是否检查了视图,gridview.getCheckedItemPosition()
如果您想实际将 textview 设置为“Clicked”,您可能会发现它很有用。
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
parent.setItemChecked(position,true);
yourAdapter.ViewHolder vh = (yourAdapter.ViewHolder) v.getTag();
vh.textView.setText("Clicked");
}
});
在您的适配器中,您可以在静态 ViewHolder 类中保存对扩展相对布局的引用,如果选中(例如holder.extendedrelativeLayout.isChecked()
),请确保将 textView 设置为“Clicked”。