此活动包括键入一个成分(然后显示它)并选中它旁边的复选框。我有以下错误,我无法摆脱(我已经搜索了5个小时的解决方案):
如果我按回键盘隐藏,当我点击搜索视图时,它再也不会显示,而是进入主屏幕并再次返回。
如果勾选复选框并滚动,则会随机选中其他复选框。
如何将已检查的成分放入数组并将该数组发送到下一个活动?(activity_ingredient list)
以下是代码:
>>> a += 4.0
TypeError: invalid type promotion
和活动的xml:
package ro.mosgoreanu.andu.foodholic;
import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.common.api.GoogleApiClient;
import java.util.ArrayList;
import java.util.Arrays;
public class typing_window extends AppCompatActivity implements view.OnClickListener {
private static Button button;
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_typing_window);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(this);
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) {
if(s.toString().equals("")){
initList();
}
else {
searchItem(s.toString());
}
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.toString().equals("")){
initList();
}
else {
searchItem(s.toString());
}
}
@Override
public void afterTextChanged(Editable s) {
if(s.toString().equals("")){
initList();
}
else {
searchItem(s.toString());
}
}
});
}
public void buttononClick()
{
startActivity(new Intent("ro.mosgoreanu.andu.foodholic.ingredient_list"));
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
buttononClick();
break;
}
}
public void searchItem(String textToSearch){
for(String item:items) {
if(!item.contains(textToSearch)){
listItems.remove(item);
}
}
adapter.notifyDataSetChanged();
}
public void initList(){
items = new String[]{"breadcumb","butter","capiscum","carrot","cheese","cherry","chicken cutlets","cucumber","egg","flour","garlic","ham","lemon juice","mayonnaise","milk","mushroom","onion (red)","onion (white)","peas","pepper","pork","pickles","potato (red)","potato (white)","soy sauce","tomato","yogurt"};
listItems = new ArrayList<>(Arrays.asList(items));
adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.txt, listItems );
listView.setAdapter(adapter);
}
}
和布局xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="ro.mosgoreanu.andu.foodholic.typing_window"
android:background="#89913f">
<include layout="@layout/content_typing_window" />
<EditText
android:id="@+id/txtsearch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Search Ingredient"
android:textAlignment="textStart"
android:paddingLeft="50dp"
android:layout_toLeftOf="@+id/imageButton"
android:layout_toStartOf="@+id/imageButton"
android:allowUndo="true" />
<SearchView
android:id="@+id/search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:paddingEnd="0dp"
android:paddingLeft="0dp"
android:translationY="-5dp"
android:focusable="true"
android:clickable="true" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="View list"
android:id="@+id/button"
android:layout_marginRight="26dp"
android:layout_marginEnd="26dp"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:background="#00ffffff"
android:translationX="280dp"
android:translationY="-2dp"
android:clickable="true"
android:allowUndo="true" />
<ListView
android:id="@+id/listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/searchView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:foregroundTint="#ffffff"
android:paddingTop="50dp" />
</android.support.design.widget.CoordinatorLayout>
答案 0 :(得分:0)
嘿,我使用ArrayAdapter和SearchViewHolder完成了一个 检查并提供任何响应。
<强> MainActivity.java 强>
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static Button button;
String[] items;
private Fruits[] itemss;
ArrayList<String> listItems;
ArrayAdapter<Fruits> adapter;
ListView listView;
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_typing_window);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(this);
listView = (ListView) findViewById(R.id.listview);
editText = (EditText) findViewById(R.id.txtsearch);
initList();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Fruits it = adapter.getItem(position);
it.toggleChecked();
SelectViewHolder viewHolder = (SelectViewHolder) view.getTag();
viewHolder.getCheckBox().setChecked(it.isChecked());
}
});
}
private void initList() {
itemss = (Fruits[]) getLastNonConfigurationInstance();
ArrayList<Fruits> items = new ArrayList<Fruits>();
items.add(new Fruits("breadcumb"));
items.add(new Fruits("butter"));
items.add(new Fruits("capiscum"));
items.add(new Fruits("carrot"));
items.add(new Fruits("cheese"));
items.add(new Fruits("cherry"));
items.add(new Fruits("chicken cutlets"));
items.add(new Fruits("cucumber"));
items.add(new Fruits("egg"));
items.add(new Fruits("flour"));
items.add(new Fruits("garlic"));
items.add(new Fruits("ham"));
items.add(new Fruits("lemon juice"));
items.add(new Fruits("mayonnaise"));
items.add(new Fruits("milk"));
items.add(new Fruits("mushroom"));
items.add(new Fruits("onion (red)"));
items.add(new Fruits("onion (white)"));
items.add(new Fruits("peas"));
items.add(new Fruits("pepper"));
items.add(new Fruits("pork"));
items.add(new Fruits("pickles"));
items.add(new Fruits("potato (red)"));
items.add(new Fruits("potato (white)"));
items.add(new Fruits("soy sauce"));
items.add(new Fruits("tomato"));
items.add(new Fruits("yogurt"));
adapter = new ActivityAdapter(this, items);
listView.setAdapter(adapter);
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) {
MainActivity.this.adapter.getFilter().filter(s);
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
private static class Fruits {
private String name = "";
private boolean checked = false;
public Fruits() {
}
public Fruits(String name) {
this.name = name;
}
public Fruits(String name, boolean checked) {
this.name = name;
this.checked = checked;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
public String toString() {
return name;
}
public void toggleChecked() {
checked = !checked;
}
}
private static class SelectViewHolder {
private CheckBox checkBox;
private TextView textView;
public SelectViewHolder() {
}
public SelectViewHolder(TextView textView, CheckBox checkBox) {
this.checkBox = checkBox;
this.textView = textView;
}
public CheckBox getCheckBox() {
return checkBox;
}
public void setCheckBox(CheckBox checkBox) {
this.checkBox = checkBox;
}
public TextView getTextView() {
return textView;
}
public void setTextView(TextView textView) {
this.textView = textView;
}
}
private static class ActivityAdapter extends ArrayAdapter<Fruits>{
private LayoutInflater inflater;
public ActivityAdapter(Context context, List<Fruits> list) {
super(context, R.layout.content_typing_window, R.id.txt, list);
inflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Fruits fruit = (Fruits) this.getItem(position);
CheckBox checkBox;
TextView textView;
if (convertView == null) {
convertView = inflater.inflate(R.layout.content_typing_window, null);
textView = (TextView) convertView
.findViewById(R.id.txt);
checkBox = (CheckBox) convertView.findViewById(R.id.checkBox);
convertView.setTag(new SelectViewHolder(textView, checkBox));
checkBox.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
CheckBox cb = (CheckBox) v;
Fruits li = (Fruits) cb.getTag();
li.setChecked(cb.isChecked());
}
});
}
else {
SelectViewHolder viewHolder = (SelectViewHolder) convertView
.getTag();
checkBox = viewHolder.getCheckBox();
textView = viewHolder.getTextView();
}
checkBox.setTag(fruit);
checkBox.setChecked(fruit.isChecked());
textView.setText(fruit.getName());
return convertView;
}
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
break;
}
}
// public void initList(){
// items = new String[]{"breadcumb","butter","capiscum","carrot","cheese","cherry"
// ,"chicken cutlets","cucumber","egg","flour","garlic","ham","lemon juice","mayonnaise",
// "milk","mushroom","onion (red)","onion (white)","peas","pepper","pork","pickles","potato (red)",
// "potato (white)","soy sauce","tomato","yogurt"};
// listItems = new ArrayList<>(Arrays.asList(items));
// adapter = new ArrayAdapter<mItems>(this, R.layout.content_typing_window, R.id.txt, 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_main, 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);
}
}