我如何改变它,使复选框而不是文本显示
How can I change it so checkboxes instead of text appear?
如何更改它,使复选框而不是文本显示?现在,用户可以搜索加拿大,应用程序显示文本加拿大。现在我想用复选框代替文本
这是如何工作的?
非常感谢!
最诚挚的问候,费边
. java
public class Home extends AppCompatActivity {
String[] items;
ArrayList<String> listItems;
ArrayAdapter<String> adapter;
ListView listView;
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
listView=(ListView)findViewById(R.id.listview);
editText=(EditText)findViewById(R.id.txtsearch);
initList();
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.toString().equals("")){
// reset listview (resette listview)
initList();
}
else{
// perform search
searchItem(s.toString());
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
public void searchItem(String textToSearch){
for(String item:items){
if(!item.contains(textToSearch)) {
listItems.remove(item);
}
}
adapter.notifyDataSetChanged();
}
public void initList(){
items=new String[]{"Canada","China"};
listItems=new ArrayList<>(Arrays.asList(items));
adapter=new ArrayAdapter<String>(this,R.layout.list_item, R.id.txtitem, listItems);
listView.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_home, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
. xml
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Text"
android:id="@+id/textview"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Buttontext"
android:id="@+id/button"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtsearch"
android:layout_centerHorizontal="true"
android:layout_marginTop="38dp"
android:hint="search"
/>
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"></ListView>
</RelativeLayout>
这取决于你希望应用程序看起来是什么样子,但是为了创建一个复选框列表,你可以简单地使用一个垂直方向的LinearLayout来包含这些复选框。
具体实现取决于您的数据源是静态的还是动态的。
静态:如果你想创建一个静态的复选框列表,你可以简单地将它们添加到LinearLayout中(如下所示),然后将这个LinearLayout添加到你的主布局中(而不是ListView):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:id="@+id/layout_cbx" >
<CheckBox
android:id="@+id/cbx_canada"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Canada" />
<CheckBox
android:id="@+id/cbx_china"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="China"
android:checked="true" />
</LinearLayout>
动态:如果您希望动态创建复选框(这是常见的情况),首先创建一个LinearLayout作为容器:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:id="@+id/layout_cbx" />
然后在你的活动中添加复选框(例如,在initList之后添加以下复选框到onCreate):
LinearLayout layout = (LinearLayout)findViewById(R.id.layout_cbx);
for(String item : items){
CheckBox cbx = new CheckBox(this);
cbx.setText(item);
layout.addView(cbx);
}
编辑:当您使用静态资源时,您的searchItem方法应该为每个复选框包含如下内容:
CheckBox cbx = (CheckBox)findViewById(R.id.cbx_china);
cbx.setChecked(textToSearch == cbx.getText());
cbx = (CheckBox)findViewById(R.id.cbx_canada);
cbx.setChecked(textToSearch == cbx.getText());
我认为这不是最好的做法。
you should add or change <CheckBox> according to your requirement for the output
like
<!----Your java class---->
<CheckBox android:id="@+id/checkbox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text"
android:onClick="onCheckboxClicked"/>
<!----Your java class---->
public class Home extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_layout_id);
final CheckBox checkBox = (CheckBox) findViewById(R.id.checkbox_id);
if (checkBox.isChecked()) {
checkBox.setChecked(false);
//Rest of your code
}
}
}
我到底应该改变什么?请填写此代码并删除未使用的代码:
CheckBox cbx = (CheckBox)findViewById(R.id.cbx_china);
if (textToSearch == cbx.getText())
cbx.setChecked(!cbx.isChecked());
我很抱歉,但我现在很困惑。
public class Home extends AppCompatActivity {
String[] items;
ArrayList<String> listItems;
ArrayAdapter<String> adapter;
ListView listView;
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
// CheckBox
final CheckBox checkBox = (CheckBox) findViewById(R.id.cbx_canada);
if (checkBox.isChecked()) {
checkBox.setChecked(false);
//listView = (ListView) findViewById(R.id.listview);
editText = (EditText) findViewById(R.id.txtsearch);
initList();
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.toString().equals("")) {
// reset listview (resette listview)
initList();
} else {
// perform search
searchItem(s.toString());
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
}}
public void searchItem(String textToSearch){
for(String item:items){
if(!item.contains(textToSearch)) {
listItems.remove(item);
}
}
adapter.notifyDataSetChanged();
}
public void initList(){
items=new String[]{"Canada","China"};//////////////////////////////////////
listItems=new ArrayList<>(Arrays.asList(items));
adapter=new ArrayAdapter<String>(this,R.layout.activity_home, R.id.activity_home, listItems); // List item dazugefügt
listView.setAdapter(adapter);
}
// Menüs //
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_home, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
非常感谢!最好的问候,费边
相关文章:
- Bootstrap使用复选框显示和隐藏id
- oncheck复选框显示主干中的数据
- AngularJS过滤器使用ng个重复复选框显示所有页面加载
- 在同一行中为每个复选框显示和隐藏文本字段
- 为每个选中的复选框显示相同的问题集.(PHP和JS/Jquery)
- 我需要有关根据复选框显示和隐藏数据的帮助
- 如何使用复选框显示表单的更多选项并更改表单的操作属性
- 将选中的复选框显示在一个部分中,未选中的复选框显示在另一个部分中
- jQuery / JavaScript 复选框显示多个和单个选择中选中的复选框的数量
- 如何根据选中的复选框显示表行
- 如何为不同的复选框显示不同的下拉列表,然后在选中多个复选框时显示不同的下拉列表
- 让复选框显示某些内容
- 根据复选框显示/隐藏表行
- 根据复选框显示文本框
- 如何使用javascript复选框显示警报消息
- JQuery过滤器复选框显示/隐藏元素
- 正在选中复选框显示名称
- 在Highcharts中使用按钮/复选框显示/隐藏数据的示例
- EXTJS复选框显示为[object object]
- 复选框显示在for循环中,如何在Javascript中获取getElementById