【发布时间】:2016-07-25 20:38:18
【问题描述】:
此活动包括输入一种成分(然后显示它)并选中它旁边的复选框。我有以下无法摆脱的错误(我一直在寻找解决方案 5 小时):
如果我按回键使键盘隐藏,当我单击搜索视图时,它不再显示,而是返回主屏幕并再次输入。
如果我选中一个复选框并滚动,则会随机选中其他复选框。
如何将我检查过的成分放入一个数组并将该数组发送到下一个活动?(activity_ingredient 列表)
代码如下:
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>
和布局xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="19dp"
android:text="Add"
android:id="@+id/checkBox"
android:layout_gravity="right"
android:translationY="25dp"
android:translationX="0dp"
android:layout_marginLeft="280dp"
android:focusable="false"/>
<TextView
android:id="@+id/txt"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="5dp"
/>
</LinearLayout>
【问题讨论】:
-
对于#2,发布您的适配器的代码
标签: java android listview search android-studio