Java 在ListView中使用getFilter时,SharedReference获取的索引错误
我有一个使用ArrayAdapter的ListView,我还实现了Java 在ListView中使用getFilter时,SharedReference获取的索引错误,java,android,listview,android-listview,Java,Android,Listview,Android Listview,我有一个使用ArrayAdapter的ListView,我还实现了getFilter函数来在ListView中搜索。我正在使用SharedReference获取列表视图的索引,以显示有关下一个活动的一些信息。搜索时,如果索引不同,则会导致我的应用程序显示错误信息 case 0: tvT = (TextView) findViewById(R.id.txtTitle); strT = tvT.getText().toS
getFilter
函数来在ListView
中搜索。我正在使用SharedReference
获取列表视图的索引,以显示有关下一个活动的一些信息。搜索时,如果索引不同,则会导致我的应用程序显示错误信息
case 0:
tvT = (TextView) findViewById(R.id.txtTitle);
strT = tvT.getText().toString();
inPos = strT.indexOf(".");
strT = strT.substring(0, inPos);
inPos = Integer.valueOf(strT);
Toast.makeText(getApplicationContext(), String.valueOf(inPos), 2000).show();
//moveToActivity(String.valueOf(inPos-1)); //0
break;
case 1:
tvT = (TextView) findViewById(R.id.txtTitle);
strT = tvT.getText().toString();
inPos = strT.indexOf(".");
strT = strT.substring(0, inPos);
inPos = Integer.valueOf(strT);
Toast.makeText(getApplicationContext(), String.valueOf(inPos), 2000).show();
//moveToActivity("1"); //1
break;
case 2:
tvT = (TextView) findViewById(R.id.txtTitle);
strT = tvT.getText().toString();
inPos = strT.indexOf(".");
strT = strT.substring(0, inPos);
inPos = Integer.valueOf(strT);
Toast.makeText(getApplicationContext(), String.valueOf(inPos), 2000).show();
//moveToActivity("2"); //2
break;
case 3:
tvT = (TextView) findViewById(R.id.txtTitle);
strT = tvT.getText().toString();
inPos = strT.indexOf(".");
strT2 = strT.substring(0, inPos);
inPos = Integer.valueOf(strT2);
Toast.makeText(getApplicationContext(), strT, 2000).show();
//moveToActivity("3"); //3
break;
case 4:
tvT = (TextView) findViewById(R.id.txtTitle);
strT = tvT.getText().toString();
inPos = strT.indexOf(".");
strT2 = strT.substring(0, inPos);
inPos = Integer.valueOf(strT2);
Toast.makeText(getApplicationContext(), String.valueOf(inPos), 2000).show();
//moveToActivity("4"); //4
break;
public void moveToActivity(String strWhich) {
editor.putString("NamePosition", strWhich);
editor.commit();
Intent myIntent = new Intent(MainActivity.this, NameDisplay.class);
startActivityForResult(myIntent, 0);
overridePendingTransition(R.anim.right_slide_in, R.anim.right_slide_out);
}
我的活动示例:
案例0
代码除了案例1
案例2等等,直到案例99
它是与案例1相同的INPO。如何使索引的数字无论在什么位置都保持不变?不是假设每个元素的位置,而是有两种选择:
adapter.getItem(位置)
并从那里开始工作adapter.getItemId(位置)
并切换项目的id,而不是位置(适配器必须实现getItemId(int位置)
我用以下方法修复了它:
String check = String.valueOf(dataList.getItemAtPosition(position));
int pos = check.indexOf(".");
int pos2 = check.indexOf(" ");
String strP = check.substring(pos2+1, pos);
int pos3 = Integer.valueOf(strP) - 1;
switch(position) {
case 0:
Log.i("pos", String.valueOf(pos));
Log.i("pos2", String.valueOf(pos2));
Log.i("strP", strP);
Log.i("check", check);
moveToActivity(String.valueOf(pos3)); //0
break;
case 1:
moveToActivity(String.valueOf(pos3)); //1
break;
case 2:
moveToActivity(String.valueOf(pos3)); //2
break;
case 3:
moveToActivity(String.valueOf(pos3)); //3
break;
}
我试图提取
标题
,但无论选择哪一个,它总是返回第一个标题。getItem(position)
如果在搜索时更改了位置,它将如何工作?似乎只有硬编码的数字起作用,但一旦搜索导致索引更改,它就会释放值:/getItem(position)(即使报告的位置为1)没有为您提供正确的项目?那么您的代码必须正在修改位置
我实际上已经去掉了整个开关
案例,并且工作正常。