我正在考虑为已经有文本和复选框的 ListView 中的项目添加一个图标:simple_list_item_multiple_choice.xml 只不过是一个带有一些属性的 < CheckedTextView > 标记
我知道自定义适配器解决方案,但我真的想要更直观的解决方案。我知道使用源代码并不直观,但我的意思是这样做很容易:
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, // context
android.R.layout.simple_list_item_multiple_choice, // view for an item in the list
myCursor, // cursor used for populating list items
new String[] {dBHelper.CONTACT_NAME}, // column in cursor we are getting data from
new int[] {android.R.id.text1}); // where to put this data in the item's view
并且可以通过以下方式获取结果:
SparseBooleanArray checkedPositions = lv.getCheckedItemPositions();
使用单独文件中编写的任何代码
使用来自: http ://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3.3_r1/android/widget/CheckedTextView.java/的源代码
我的问题是eclipse无法解决: R.styleable.CheckedTextView和mPaddingRight 在:
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.CheckedTextView, defStyle, 0);
和
Drawable d = a.getDrawable(R.styleable.CheckedTextView_checkMark);
和
boolean checked = a.getBoolean(R.styleable.CheckedTextView_checked, false);
和
mPaddingRight = mCheckMarkWidth + mBasePaddingRight;
d.setState(getDrawableState());
} else {
mPaddingRight = mBasePaddingRight;
}
和
@Override
public void setPadding(int left, int top, int right, int bottom) {
super.setPadding(left, top, right, bottom);
mBasePaddingRight = mPaddingRight;
}
谢谢... :)