Android 如何知道使用复选框和列表视图选中了哪一行?
下面是ListView项目类Android 如何知道使用复选框和列表视图选中了哪一行?,android,listview,checkbox,android-listview,android-checkbox,Android,Listview,Checkbox,Android Listview,Android Checkbox,下面是ListView项目类 public class CategoryItem06 { private String text; private boolean checked; public void setText(String text) { this.text = text; } public String getText() { return this.text; } // public void setCheck(boolean checked)
public class CategoryItem06 {
private String text;
private boolean checked;
public void setText(String text) {
this.text = text;
}
public String getText() {
return this.text;
}
// public void setCheck(boolean checked) {
this.checked = checked;
}
// public boolean getCheck() {
return this.checked;
}
}
public class CategoryAdapter06 extends BaseAdapter {
public ArrayList<CategoryItem06> listViewItemList = new ArrayList<CategoryItem06>() ;
public CategoryAdapter06() {
}
@Override
public int getCount() {
return listViewItemList.size() ;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final int pos = position;
final Context context = parent.getContext();
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.category_item06, parent, false);
}
TextView textTextView = (TextView) convertView.findViewById(R.id.textView1) ;
CheckBox checkBox=(CheckBox) convertView.findViewById(R.id.checkBoxMafia);
CategoryItem06 listViewItem = listViewItemList.get(position);
textTextView.setText(listViewItem.getText());
checkBox.setChecked(listViewItem.getCheck());
return convertView;
}
@Override
public long getItemId(int position) {
return position ;
}
@Override
public Object getItem(int position) {
return listViewItemList.get(position) ;
}
public void addItem( String text) {
CategoryItem06 item = new CategoryItem06();
item.setText(text);
listViewItemList.add(item);
}
}
public class CategorySelection06 extends AppCompatActivity {
Singleton s1 = Singleton.getInstance();
ListView listview;
// Creating Adapter
CategoryAdapter06 adapter = new CategoryAdapter06();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_category_selection06);
listview = (ListView) findViewById(R.id.listview1);
listview.setAdapter(adapter);
// Adding Items
adapter.addItem("Pets");
adapter.addItem("Singers");
adapter.addItem("Game");
adapter.addItem("Nations");
Button button = findViewById(R.id.button6);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for (int i = 0; i < adapter.listViewItemList.size(); i++) {
if (adapter.listViewItemList.get(i).getCheck()) {
s1.ListViewCategory.add(adapter.listViewItemList.get(i).getText());
}
}
Intent intent = new Intent(getApplicationContext(), RoleSelection07.class);
startActivity(intent);
finish();
}
});
}
}
public class CategorySelection06扩展了AppCompative活动{
Singleton s1=Singleton.getInstance();
列表视图列表视图;
//创建适配器
CategoryAdapter06适配器=新CategoryAdapter06();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
设置内容视图(R.layout.activity\u category\u selection06);
listview=(listview)findViewById(R.id.listview1);
setAdapter(适配器);
//添加项目
适配器。附件(“Pets”);
adapter.addItem(“歌手”);
adapter.addItem(“游戏”);
adapter.addItem(“国家”);
按钮按钮=findViewById(R.id.button6);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
对于(int i=0;i
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for (int i = 0; i < adapter.listViewItemList.size(); i++) {
if (adapter.listViewItemList.get(i).getCheck()) {
s1.ListViewCategory.add(adapter.listViewItemList.get(i).getText());
}
}
Intent intent = new Intent(getApplicationContext(), RoleSelection07.class);
startActivity(intent);
finish();
}
button.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
对于(int i=0;i
但是,getCheck()不起作用,因为setCheck()不在CategoryAdapter类的addItem()中
我试图将setCheck()放在addItem()方法中,但后来我不得不在add()中放入另一个参数,然后出现红线和错误
由于我是一个新手,我从网站上复制了这些代码,但我并不真正了解使用CheckableRelativeLayout的想法
此布局显示复选框是否选中,但不指示选中了哪一行
总而言之,我的问题是“如何从多个选中的行中获取文本,并知道选中了哪一行?”
我知道这个问题很长,但我真的需要解决这个问题。。。
如果有人回答我的问题,我将不胜感激。谢谢你,没有人回答,所以我自己解决了
SparseBooleanArray checkedItems = listview.getCheckedItemPositions();
int count = adapter.getCount();
for (int i = 0; i < count; i++) {
if (checkedItems.get(i)) {
s1.ListViewCategory.add(adapter.listViewItemList.get(i).getText());
}
}
listview.clearChoices();
Intent intent = new Intent(getApplicationContext(), RoleSelection07.class);
startActivity(intent);
finish();
SparseBooleanArray checkedItems=listview.getCheckedItemPositions();
int count=adapter.getCount();
for(int i=0;i
SparseBooleanArray checkedItems = listview.getCheckedItemPositions();
int count = adapter.getCount();
for (int i = 0; i < count; i++) {
if (checkedItems.get(i)) {
s1.ListViewCategory.add(adapter.listViewItemList.get(i).getText());
}
}
listview.clearChoices();
Intent intent = new Intent(getApplicationContext(), RoleSelection07.class);
startActivity(intent);
finish();