【问题标题】:Hide an android ListView until search string is entered隐藏一个 android ListView 直到输入搜索字符串
【发布时间】:2013-02-07 11:44:15
【问题描述】:

我已按照本教程 http://www.androidpeople.com/android-listview-searchbox-sort-items 进行操作,并且我在列表中进行了搜索。我想做的唯一更改是最初隐藏列表视图,并且结果仅在用户开始输入时出现。有没有办法做到这一点?

编辑:添加代码。

package com.example.testapp;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;

public class MainActivity extends Activity {
/** Called when the activity is first created. */
private ListView lv1;
private EditText ed;
private String lv_arr[]=  {"Android","Cupcake","Donut","Eclairs","AndroidPeople","Froyo",};
private ArrayList<String> arr_sort= new ArrayList<String>();
int textlength=0;
@Override
public void onCreate(Bundle icicle)
{
super.onCreate(icicle);
setContentView(R.layout.activity_main);
lv1=(ListView)findViewById(R.id.ListView);
ed=(EditText)findViewById(R.id.EditText01);
// By using setAdpater method in listview we an add string array in list.
lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 ,   lv_arr));
ed.addTextChangedListener(new TextWatcher() {

public void afterTextChanged(Editable s) {
if(lv1.getVisibility() != View.VISIBLE)
    lv1.setVisibility(View.VISIBLE);
}

public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}

public void onTextChanged(CharSequence s, int start, int before,
int count) {

textlength=ed.getText().length();
arr_sort.clear();
for(int i=0;i<lv_arr.length;i++)
{
if(textlength<=lv_arr[i].length())
{
if(ed.getText().toString().equalsIgnoreCase((String) lv_arr[i].subSequence(0,    textlength)))
{
arr_sort.add(lv_arr[i]);
}
}
}

lv1.setAdapter(new ArrayAdapter<String>    (MainActivity.this,android.R.layout.simple_list_item_1 , arr_sort));

} 
});
}




@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

}

【问题讨论】:

    标签: android listview search-box


    【解决方案1】:

    我会这样做:

       EditText etSearch = (EditText) getView().findViewById(R.id.etSearch);
        etSearch.addTextChangedListener(new TextWatcher(){
                public void afterTextChanged(Editable s) {
                    if(view.getVisibility() != View.Visible)
                           view.setVisiblity(View.Visible);
                }
                public void beforeTextChanged(CharSequence s, int start, int count, int after){}
                public void onTextChanged(CharSequence s, int start, int before, int count){}
            }); 
    

    【讨论】:

    • 这仍然不适合我 - 你能看到我做错了什么吗?
    • 现在可以了,但是当我尝试将代码引入另一个项目时,我得到了由以下行引起的空指针异常
    • lv1.setAdapter(new ArrayAdapter(this,android.R.layout.simple_list_item_1 , lv_arr));
    • 抱歉没有,现在可以了吗? :) 好的。还是您需要更多帮助?
    猜你喜欢
    • 1970-01-01
    • 2011-06-18
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 2013-09-22
    相关资源
    最近更新 更多