在android中向列表视图添加复选框
当我运行下面的代码时,复选框的名称以随机字符串的形式出现(比如在android中向列表视图添加复选框,android,android-arrayadapter,android-checkbox,Android,Android Arrayadapter,Android Checkbox,当我运行下面的代码时,复选框的名称以随机字符串的形式出现(比如android.widget)。CheckBox@43e641b0)此外,我无法单击添加的复选框 这是我的java代码: package com.srk.android.rough1; import java.util.ArrayList; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import and
android.widget)。CheckBox@43e641b0
)此外,我无法单击添加的复选框
这是我的java代码:
package com.srk.android.rough1;
import java.util.ArrayList;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.EditText;
import android.app.ListActivity;
public class Rough1Activity extends ListActivity {
ArrayList<CheckBox> listItems=new ArrayList<CheckBox>();
ArrayAdapter<CheckBox> adapter;
private EditText taskNameEditText;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
adapter=new ArrayAdapter<CheckBox>(this, android.R.layout.simple_list_item_multiple_choice, listItems);
setListAdapter(adapter);
}
public void addItems(View v) {
taskNameEditText=(EditText)findViewById(R.id.TaskName);
String taskName=taskNameEditText.getText().toString();
CheckBox cb=new CheckBox(this);
cb.setText(taskName);
listItems.add(cb);
adapter.notifyDataSetChanged();
}
}
package com.srk.android.1;
导入java.util.ArrayList;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.CheckBox;
导入android.widget.EditText;
导入android.app.ListActivity;
公共类活动扩展了ListActivity{
ArrayList listItems=新的ArrayList();
阵列适配器;
私有EditText任务名称EditText;
@凌驾
创建公共空间(捆绑冰柱){
超级冰柱;
setContentView(R.layout.main);
adapter=new ArrayAdapter(这个,android.R.layout.simple\u list\u item\u多选,listItems);
setListAdapter(适配器);
}
公共无效附加项(视图五){
taskNameEditText=(EditText)findViewById(R.id.TaskName);
字符串taskName=taskNameEditText.getText().toString();
复选框cb=新复选框(此复选框);
cb.setText(任务名称);
增加(cb);
adapter.notifyDataSetChanged();
}
}
您试图显示复选框,因为您将添加一个整数或字符串数组。。。我建议采取不同的办法:
public class Rough1Activity extends ListActivity {
private ArrayList<String> listItems = new ArrayList<String>();
private ArrayAdapter<String> adapter;
private EditText taskNameEditText;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
// I like this layout, but it's your choice
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, listItems);
//adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, listItems);
setListAdapter(adapter);
// I guessed that you want a multiple choice list from your first layout choice. This is optional, you can remove it.
ListView listView = getListView();
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
// Here you only need to initialize taskNameEditText once
taskNameEditText = (EditText) findViewById(R.id.TaskName);
}
public void addItems(View v) {
// Add the current string in the EditText to the ListView
adapter.add(taskNameEditText.getText().toString());
}
}
public class活动扩展了ListActivity{
private ArrayList listItems=new ArrayList();
专用阵列适配器;
私有EditText任务名称EditText;
@凌驾
创建公共空间(捆绑冰柱){
超级冰柱;
setContentView(R.layout.main);
//我喜欢这种布局,但这是你的选择
adapter=new ArrayAdapter(这是android.R.layout.simple\u list\u item\u选中的列表项);
//adapter=new ArrayAdapter(这个,android.R.layout.simple\u list\u item\u多选,listItems);
setListAdapter(适配器);
//我猜您希望从第一个布局选择中获得一个多选列表。这是可选的,您可以将其删除。
ListView ListView=getListView();
listView.setChoiceMode(listView.CHOICE\u MODE\u MULTIPLE);
//在这里,您只需要初始化taskNameEditText一次
taskNameEditText=(EditText)findViewById(R.id.TaskName);
}
公共无效附加项(视图五){
//将EditText中的当前字符串添加到ListView
add(taskNameEditText.getText().toString());
}
}
您希望有一个字符串列表并显示带有复选框的字符串。我将您的ArrayList和ArrayAdapter更改为字符串子类型以反映这一点,并且布局android.R.layout.simple\u list\u item\u checked
添加了复选框功能本身。现在,用户将看到他们在具有可检查行的ListView中输入的文本
希望这有帮助