Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android列表视图中的搜索功能_Android_Android Listview_Android Search - Fatal编程技术网

Android列表视图中的搜索功能

Android列表视图中的搜索功能,android,android-listview,android-search,Android,Android Listview,Android Search,我对安卓相当陌生。我正试图通过使用arrayadapter在项目列表上开发一个搜索功能,如下所示。但是搜索没有正常工作。请帮帮我 这是我的密码 AddToOutlet.java public class AddToOutlet extends Activity { SessionManager session; String success, cus_id, bus_id, cus_outlet; ArrayList<Item>

我对安卓相当陌生。我正试图通过使用arrayadapter在项目列表上开发一个搜索功能,如下所示。但是搜索没有正常工作。请帮帮我

这是我的密码

AddToOutlet.java 
       public class AddToOutlet extends Activity {
       SessionManager session;
       String success, cus_id, bus_id, cus_outlet;
       ArrayList<Item> item;
       com.amplio.MyCustomEditText editsearch;

// TextView tvcountoutlet;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.addtooutlet);
    session = new SessionManager(getApplicationContext());
    session.checkLoginback();

    item = new ArrayList<Item>();
    // get user data from session
    HashMap<String, String> user = session.getUserDetails();
    // ID
    final String cus_id = user.get(SessionManager.KEY_ID);


    ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
    postParameters.add(new BasicNameValuePair("cus_id", cus_id));
    String response = null;
    try {
        response = LoginHttpClient
                .executeHttpPost(
                        "http://10.0.2.2/android_api/add_to_outlet.php",
                        postParameters);
        response = response.toString();
        response = response.replaceAll("\\s+", "");
        JSONObject json = new JSONObject(response);
        JSONArray jArray = json.getJSONArray("customer");
        for (int i = 0; i < jArray.length(); i++) {
            JSONObject json_data = jArray.getJSONObject(i);
            Item it = new Item();
            success = json_data.getString("success");
            it.setBusname(json_data.getString("bus_name"));
            it.setBusid(json_data.getString("bus_id"));
            it.setCusId(cus_id);
            item.add(it);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    ListView lv = (ListView) findViewById(R.id.list);
    final MyAdapter adapter = new MyAdapter(AddToOutlet.this,
            R.layout.addtooutlet_list_item, item);
    lv.setAdapter(adapter);

    // Locate the EditText in listview_main.xml
    editsearch = (com.amplio.MyCustomEditText) findViewById(R.id.EditText01);

    // Capture Text in EditText
    editsearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub
            String text = editsearch.getText().toString()
                    .toLowerCase(Locale.getDefault());
            adapter.filter(text);
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1,
                int arg2, int arg3) {
            // TODO Auto-generated method stub
        }

        @Override
        public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub
        }
    });

}
}
下面是addtooutlet.xml

            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#ffffff"
            android:orientation="vertical" >

        <!-- Editext for Search -->

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="1dp"
            android:layout_marginLeft="10dp"
            android:background="#ffffff" >

            <com.amplio.MyCustomEditText
                android:id="@+id/EditText01"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="40dp"
                android:background="#00000000"
                android:ems="20"
                android:hint="@string/search"
                android:lineSpacingExtra="5dp"
                android:textSize="12sp" >
            </com.amplio.MyCustomEditText>
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:background="#eeeeee" >

            <ListView
                android:id="@+id/list"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:drawSelectorOnTop="false" />
        </RelativeLayout>
    </LinearLayout>

这是我的addtooutlet\u list\u item.xml

         <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="match_parent"
         android:layout_height="46dp"
          android:background="#ffffff"
         android:padding="5dip"
         android:weightSum="100" >

    <TextView
        android:id="@+id/item_bname"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="20"
        android:padding="2dp"
        android:text="Hello"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#000000"
        android:textSize="12dip" />

    <TextView
        android:id="@+id/item_bid"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="20"
        android:padding="2dp"
        android:text="Hello"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#000000"
        android:textSize="12dip"
        android:visibility="invisible" />

    <TextView
        android:id="@+id/item_cid"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="20"
        android:padding="2dp"
        android:text="Hello"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#000000"
        android:textSize="12dip"
        android:visibility="invisible" />

    <Button
        android:id="@+id/item_button"
        android:layout_width="31dp"
        android:layout_height="31dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/item_bname"
        android:background="@drawable/circle"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:text="join"
        android:textColor="#ffffff"
        android:textSize="10sp" />
</RelativeLayout>

试着这样做。希望它能帮助你

editsearch.addTextChangedListener(new TextWatcher() {

    @Override
    public void afterTextChanged(Editable arg0) {
        // TODO Auto-generated method stub
    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1,
            int arg2, int arg3) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onTextChanged(CharSequence arg0, int arg1, int arg2,
            int arg3) {
        // TODO Auto-generated method stub
        editsearch.requestFocus();
        final ArrayList<Item> itemArray = new ArrayList<Item>();
        int textlength = 0;
        textlength = editsearch.getText().length();
        itemArray.clear();
        for (int i = 0; i < item.size(); i++)
        {
            String itemTitle = item.get(i).name();
            String compareItemTitle = "";
            if (textlength <= item.length())
            {
               compareItemTitle = (String) itemTitle.toLowerCase().subSequence(0, textlength);
               if(compareItemTitle.contentEquals(editsearch.getText().toString().toLowerCase()))
               {
                    itemArray.add(item.get(i));
               }
            }
        }
        adapter = new MyAdapter(AddToOutlet.this, R.layout.addtooutlet_list_item, itemArray);
        lv.setAdapter(adapter);
}

    }
});
editsearch.addTextChangedListener(新的TextWatcher(){
@凌驾
public void PostTextChanged(可编辑arg0){
//TODO自动生成的方法存根
}
@凌驾
更改前的公共无效(字符序列arg0,int arg1,
整数arg2,整数arg3){
//TODO自动生成的方法存根
}
@凌驾
public void onTextChanged(字符序列arg0、int arg1、int arg2、,
int arg3){
//TODO自动生成的方法存根
editsearch.requestFocus();
final ArrayList itemArray=新ArrayList();
int textlength=0;
textlength=editsearch.getText().length();
itemArray.clear();
对于(int i=0;i如果(textlength尝试这种方式,这正是您想要的

   @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // adds item to action bar
        getMenuInflater().inflate(R.menu.search_main, menu);

        // Get Search item from action bar and Get Search service
        MenuItem searchItem = menu.findItem(R.id.action_search);
        SearchManager searchManager = (SearchManager) MainActivity.this.getSystemService(Context.SEARCH_SERVICE);
        if (searchItem != null) {
            searchView = (SearchView) searchItem.getActionView();
        }
        if (searchView != null) {
            searchView.setSearchableInfo(searchManager.getSearchableInfo(MainActivity.this.getComponentName()));
            searchView.setIconified(false);
        }

        return true;
    }

我想这对你有帮助
editsearch.addTextChangedListener(new TextWatcher() {

    @Override
    public void afterTextChanged(Editable arg0) {
        // TODO Auto-generated method stub
    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1,
            int arg2, int arg3) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onTextChanged(CharSequence arg0, int arg1, int arg2,
            int arg3) {
        // TODO Auto-generated method stub
        editsearch.requestFocus();
        final ArrayList<Item> itemArray = new ArrayList<Item>();
        int textlength = 0;
        textlength = editsearch.getText().length();
        itemArray.clear();
        for (int i = 0; i < item.size(); i++)
        {
            String itemTitle = item.get(i).name();
            String compareItemTitle = "";
            if (textlength <= item.length())
            {
               compareItemTitle = (String) itemTitle.toLowerCase().subSequence(0, textlength);
               if(compareItemTitle.contentEquals(editsearch.getText().toString().toLowerCase()))
               {
                    itemArray.add(item.get(i));
               }
            }
        }
        adapter = new MyAdapter(AddToOutlet.this, R.layout.addtooutlet_list_item, itemArray);
        lv.setAdapter(adapter);
}

    }
});
   @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // adds item to action bar
        getMenuInflater().inflate(R.menu.search_main, menu);

        // Get Search item from action bar and Get Search service
        MenuItem searchItem = menu.findItem(R.id.action_search);
        SearchManager searchManager = (SearchManager) MainActivity.this.getSystemService(Context.SEARCH_SERVICE);
        if (searchItem != null) {
            searchView = (SearchView) searchItem.getActionView();
        }
        if (searchView != null) {
            searchView.setSearchableInfo(searchManager.getSearchableInfo(MainActivity.this.getComponentName()));
            searchView.setIconified(false);
        }

        return true;
    }