我有一个search listview
,我正在尝试将搜索listview
与onItemClickListener
结合起来使用这样的开关案例。这样用户就可以搜索某个项目并单击它来执行其他活动。
以下为示例截图
这是我的代码
public class MainActivity extends AppCompatActivity {
String[] items;
ArrayAdapter<String> adapter;
ArrayList<String> listItems;
ListView listView;
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.txtSearch);
listView = findViewById(R.id.listName);
initList();
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if(charSequence.toString().equals("")){
initList();
}else{
searchItem(charSequence.toString());
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
listView.setOnItemClickListener(listener);
}
ListView.OnItemClickListener listener = new ListView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
switch (listView.getSelectedItemPosition()){
case 0:
changeActivity();
break;
case 1:
changeActivity();
break;
case 2:
changeActivity();
break;
case 3:
changeActivity();
break;
}
}
};
public void changeActivity(){
Intent intent = new Intent(MainActivity.this, Main2Activity.class);
intent.putExtra("Key", "Value");
startActivity(intent);
}
public void searchItem(String textSeache){
for (String item:items){
if(!item.contains(textSeache)){
listItems.remove(item);
}
}
adapter.notifyDataSetChanged();
}
public void initList(){
items = new String[]{"California, USA", "Toronto, CANADA", "Beijing, CHINA", "Taipei, TAIWAN"};
listItems = new ArrayList<>(Arrays.asList(items));
adapter = new ArrayAdapter<String>(this,R.layout.list_item, R.id.txtItem, listItems);
listView.setAdapter(adapter);
}
}
任何人都可以帮助我,谢谢先进......
答案 0 :(得分:0)
在listview.setAdapter(adapter)
下面添加此代码段代码并删除listview.setOnItemClickListener(listener);
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
String item = ((TextView)view).getText().toString();
Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show();
}
});
并将数据传递给下一个活动你`changeActivity();应该是这样的:
public void changeActivity(){
Intent intent = new Intent(currentActivity.this,NextActivity.class);
intent.putString("key","value");
startActivity(intent);
}`
答案 1 :(得分:0)
您可以直接使用 onItemClickListener
中的代码,
String selected = listitems.get(position) ;//or (String)parent.getItemAtPosition(position);
Intent intent = new Intent(MainActivity.this, Main2Activity.class);
intent.putExtra("Key", selected);
startActivity(intent);
我认为,不需要切换案例,因为您只想转移到下一个活动。
还检查list_item.xml布局,因为textview可能无法点击或无法集中。