我在我的应用程序上创建了一些活动,所以我创建了一个listView,其中包含这些活动的名称,因此我可以单击它们并打开我想要的活动(使用setOnClickListener方法并切换。)并且ai创建了一个searhView,所以我可以按名称过滤它们(使用setOnQueryTextListener)。
让我们使用3个名字作为例子:Alfred,Beth,Bill
在"正常" listView Alfred为0,Beth为1,Bill为2.所以我做了这个:
switch( position )
{
case 0: Intent newActivity = new Intent(telaPesquisa.this, alfred.class);
startActivity(newActivity);
break;
case 1: Intent newActivityy = new Intent(telaPesquisa.this, beth.class);
startActivity(newActivityy);
break;
case 2: Intent newActivity2 = new Intent(telaPesquisa.this, bill.class);
startActivity(newActivity2);
break;
当我在searchView中搜索" B"只是Beth和Bill出现了,这是对的,但现在Beth是0,而Bill是案例1,所以它不会打开我想要的活动。
如何设置绝对值?就像阿尔弗雷德总是0,贝斯总是1而比尔吵了2?
这是我的整个代码。
public class telaPesquisa extends Activity {
ListView lv;
SearchView sv;
String[] teams={
"Alfred",
"Beth",
"Bill",
};
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tela_pesquisa);
lv=(ListView) findViewById(R.id.listView);
sv=(SearchView) findViewById(R.id.searchView);
adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,teams);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//nt firstPosition = lv.getFirstVisiblePosition()+3;
int itemPosition = position;
// ListView Clicked item value
String itemValue = (String) lv.getItemAtPosition(position);
// Show Alert
Toast.makeText(getApplicationContext(), "Position :"+itemPosition+" ListItem : " +itemValue , Toast.LENGTH_LONG).show();
switch( position )
{
case 0: Intent alfred = new Intent(telaPesquisa.this, alfred.class);
startActivity(alfred);
break;
case 1: Intent beth = new Intent(telaPesquisa.this, beth.class);
startActivity(beth);
break;
case 2: Intent bill = new Intent(telaPesquisa.this, bill.class);
startActivity(bill);
break;
}
});
sv.setOnQueryTextListener(new OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String text) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onQueryTextChange(String text) {
adapter.getFilter().filter(text);
return false;
}
});
}
}
抱歉我的英文
答案 0 :(得分:3)
修改监听器:
v.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// ListView Clicked item value
String itemValue = (String) lv.getItemAtPosition(position);
// Show Alert
Toast.makeText(getApplicationContext(), "Position :"+itemPosition+" ListItem : " +itemValue , Toast.LENGTH_LONG).show();
switch( itemValue )
{
case "alfred": Intent alfred = new Intent(telaPesquisa.this, alfred.class);
startActivity(alfred);
break;
case "beth": Intent beth = new Intent(telaPesquisa.this, beth.class);
startActivity(beth);
break;
case "bill": Intent bill = new Intent(telaPesquisa.this, bill.class);
startActivity(bill);
break;
}
});