Android 列表视图筛选器搜索
我想用editText筛选listView。 我的ListView由ArrayString填充,当我过滤它时,一切正常。但是我在识别单击的元素时遇到了一个问题。当我过滤listView并单击过滤的项目时,我希望获得原始arrayString中的行号,以便做出一个意图。Whit my code当我单击筛选数组字符串中的项目时,该行为0且不正确。如果我搜索“Anche Se Pesa”,我想返回第2行,就像原始数组中的位置一样Android 列表视图筛选器搜索,android,arrays,string,filter,Android,Arrays,String,Filter,我想用editText筛选listView。 我的ListView由ArrayString填充,当我过滤它时,一切正常。但是我在识别单击的元素时遇到了一个问题。当我过滤listView并单击过滤的项目时,我希望获得原始arrayString中的行号,以便做出一个意图。Whit my code当我单击筛选数组字符串中的项目时,该行为0且不正确。如果我搜索“Anche Se Pesa”,我想返回第2行,就像原始数组中的位置一样 <string-array name="titoli">
<string-array name="titoli">
<item>An Val Dondona</item>
<item>Anche Mio Padre</item>
<item>Anche Se Pesa</item>
<item>Andremo In Francia</item>
<item>Aprite Le Porte</item>
<item>Arda Berghem</item>
<item>Ascoltate Amici Cari</item>
<item>Ave, O Vergine</item>
<item>Aver na Figlia Sola Soletta</item>
<item>Ancora sti quatro</item>
<item>Andouma Prou</item>
</string-array>
瓦尔多纳酒店
安奇·米奥·帕德雷
佩萨安奇酒店
弗朗西娅的安德烈莫
阿普里特勒波特酒店
阿尔达·伯格姆
爱之星酒店
奥弗金大街
太阳女神
安科拉四行
安杜马县
这是密码
public class activity_titoli extends AppCompatActivity {
Button btt_backHome;
ListView lV_titoli;
EditText eT_search;
private ArrayAdapter<CharSequence> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_titoli);
btt_backHome = (Button) findViewById(R.id.btt_backHome);
lV_titoli = (ListView) findViewById(R.id.lV_titoli);
eT_search = (EditText) findViewById(R.id.eT_search);
adapter = ArrayAdapter.createFromResource(this, R.array.titoli, android.R.layout.simple_list_item_1);
lV_titoli.setAdapter(adapter);
final Intent to_Home = new Intent (this , Activity_Main.class);
eT_search.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) {
(activity_titoli.this).adapter.getFilter().filter(arg0);
}
});
btt_backHome.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(to_Home);
}
});
lV_titoli.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Log.e("Element: " , Integer.toString(i));
}
});
}
}
public class活动\u titoli扩展了appcompative活动{
按钮btt_返回主页;
ListView lV_titoli;
编辑文本搜索;
专用阵列适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_titoli);
btt_backHome=(按钮)findviewbyd(R.id.btt_backHome);
lV_titoli=(ListView)findViewById(R.id.lV_titoli);
eT_search=(EditText)findViewById(R.id.eT_search);
adapter=ArrayAdapter.createFromResource(这个,R.array.titoli,android.R.layout.simple\u list\u item\u 1);
lV_titoli.设置适配器(适配器);
最终目的地=新目的地(此活动为主类);
eT_search.addTextChangedListener(新的TextWatcher(){
@凌驾
public void PostTextChanged(可编辑arg0){
//TODO自动生成的方法存根
}
@凌驾
更改前的公共无效(字符序列arg0,int arg1,
整数arg2,整数arg3){
//TODO自动生成的方法存根
}
@凌驾
public void onTextChanged(字符序列arg0、int arg1、int arg2、,
int arg3){
(activity_titoli.this).adapter.getFilter().filter(arg0);
}
});
btt_backHome.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
startActivity(至家);
}
});
lV_titoli.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
Log.e(“元素:”,Integer.toString(i));
}
});
}
}
尝试以下代码:
lV_titoli.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Resources res = getResources();
List<CharSequence> list = Arrays.asList(res.getStringArray(R.array.titoli));
Log.e("Element: " , Integer.toString(list.indexOf(adapter.filgetItem(i))));
}
});
lV_titoli.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
Resources res=getResources();
List List=Arrays.asList(res.getStringArray(R.array.titoli));
Log.e(“元素:”,Integer.toString(list.indexOf(adapter.filgetItem(i)));
}
});
希望这有帮助