Android 在多选列表视图中未选中列表项
我有以下设置:Android 在多选列表视图中未选中列表项,android,listview,checkbox,android-listview,multiple-choice,Android,Listview,Checkbox,Android Listview,Multiple Choice,我有以下设置: 活动: public class UploadActivity extends AbstractListActivity { protected PackageAdapter mAdapter = new PackageAdapter(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
活动:
public class UploadActivity extends AbstractListActivity {
protected PackageAdapter mAdapter = new PackageAdapter();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
setListAdapter(mAdapter);
}
}
public class PackageAdapter extends ArrayAdapter<PointPackage> {
...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView view;
if (convertView == null) {
view = (TextView) mInflater.inflate(R.layout.list_item_package, parent, false);
} else {
view = (TextView) convertView;
}
bind(getItem(position), view);
return view;
}
private void bind(PointPackage item, TextView view) {
view.setText(item.getName());
}
}
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:drawableLeft="@drawable/collection"
android:drawablePadding="@dimen/compactPadding"
android:gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceListItem" />
适配器:
public class UploadActivity extends AbstractListActivity {
protected PackageAdapter mAdapter = new PackageAdapter();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
setListAdapter(mAdapter);
}
}
public class PackageAdapter extends ArrayAdapter<PointPackage> {
...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView view;
if (convertView == null) {
view = (TextView) mInflater.inflate(R.layout.list_item_package, parent, false);
} else {
view = (TextView) convertView;
}
bind(getItem(position), view);
return view;
}
private void bind(PointPackage item, TextView view) {
view.setText(item.getName());
}
}
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:drawableLeft="@drawable/collection"
android:drawablePadding="@dimen/compactPadding"
android:gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceListItem" />
list\u item\u package.xml:
public class UploadActivity extends AbstractListActivity {
protected PackageAdapter mAdapter = new PackageAdapter();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
setListAdapter(mAdapter);
}
}
public class PackageAdapter extends ArrayAdapter<PointPackage> {
...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView view;
if (convertView == null) {
view = (TextView) mInflater.inflate(R.layout.list_item_package, parent, false);
} else {
view = (TextView) convertView;
}
bind(getItem(position), view);
return view;
}
private void bind(PointPackage item, TextView view) {
view.setText(item.getName());
}
}
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:drawableLeft="@drawable/collection"
android:drawablePadding="@dimen/compactPadding"
android:gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceListItem" />
我的问题是单击时列表项未被选中。。。该行似乎可以单击,单击时会高亮显示,但复选标记不会显示。
我做错了什么
编辑:
这个代码很好。问题出在别处。您需要实现onItemClick侦听器,在那里您可以获得已单击的视图/项目。从该视图中获取CheckedTextView并将其标记为已选中。AFAIK
CHOICE\u MODE\u MULTIPLE
应处理此问题。请参阅教程。也许你应该试试android.R.layout.simple\u list\u item\u多选布局。谢谢你的回答!这不是问题所在。实际上还包括一个具有不同高度、文本大小和填充的CheckedTextView
。