Android 在可点击列表视图中搜索时如何返回旧位置?

Android 在可点击列表视图中搜索时如何返回旧位置?,android,listview,android-listview,Android,Listview,Android Listview,我正在开发一个应用程序,它有一个可点击的列表视图。我已经在listview上面创建了一个搜索过滤器,它工作得很好。当我点击不同的项目时,我会在另一个活动中得到它们相应的详细信息,这很好。但是,当我使用搜索过滤器搜索同一项目时,我会在其他位置获取详细信息。我怎样才能回到原来的位置?这是我的密码: 代码: public void onItemClick(AdapterView父视图、视图视图、整型位置、长id){ //TODO自动生成的方法存根 //我们使用listview中的项目作为下一个活动的标

我正在开发一个应用程序,它有一个可点击的列表视图。我已经在listview上面创建了一个搜索过滤器,它工作得很好。当我点击不同的项目时,我会在另一个活动中得到它们相应的详细信息,这很好。但是,当我使用搜索过滤器搜索同一项目时,我会在其他位置获取详细信息。我怎样才能回到原来的位置?这是我的密码:

代码:

public void onItemClick(AdapterView父视图、视图视图、整型位置、长id){
//TODO自动生成的方法存根
//我们使用listview中的项目作为下一个活动的标题
字符串course=listAdapter.getItem(位置);
//我们从arrays.xml中定义的数组中检索果汁的描述
String[]description=getResources().getStringArray(R.array.description);
最终字符串courselabel=描述[位置];
//检索对话框的内容
String[]dialogmessage=getResources().getStringArray(R.array.dialogmessage);
最后一个字符串dialogmsg=dialogmessage[position];
Intent Intent=新的Intent(getApplicationContext(),MainActivityas.class);
intent.putExtra(“消息”,消息);
星触觉(意向);
}

在开始时使位置=0,在一次单击中更新位置值

@Override
 public void onResume() {
 super.onResume();  // Always call the superclass method first
 listView.setSelection(position);
}

开始时,使位置=0,再次单击更新位置值

@Override
 public void onResume() {
 super.onResume();  // Always call the superclass method first
 listView.setSelection(position);
}

另一种方法是使用
startActivityForResult()
onActivityResult()
我认为这更有用

让我们假设您使用的Activity1和Activity2

在Activity1中启动Activity2:

public static final String ACT2 = "ACT2";
public static final String POS = "POS";
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    // TODO Auto-generated method stub

    someAction(position);
}

public void someAction(int position){

    //we use the items of the listview as title of the next activity
    String course = listAdapter.getItem(position);

    //we retrieve the description of the juices from an array defined in arrays.xml
    String[] description = getResources().getStringArray(R.array.description);
    final String courselabel = description[position];

    //retrieve content for the dialog
    String[] dialogmessage = getResources().getStringArray(R.array.dialogmessage);
    final String dialogmsg = dialogmessage[position];


    Intent intent = new Intent(this, Activity2.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.putExtra(POS,lv.getPosition());
    intent.putExtra("message", message);
    startActivityForResult(intent, _.ACT2);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        lv.setPosition(mPosition);//HERE POSITION SETUP
    }
}
@Override
public int mPosition = 0;
    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    Intent data = getIntent();
    String msg =data.getStringExtra("message", "");
    mPosition = data.getIntExtra(Activity1.POS, mPosition);
}

@Override
public void finish() {     

    Intent data = new Intent();
    data.putExtra(Activity1.POS,mPosition);
    setResult(RESULT_OK, data); 

    super.finish();
}

另一种方法是使用
startActivityForResult()
onActivityResult()
我认为这更有用

让我们假设您使用的Activity1和Activity2

在Activity1中启动Activity2:

public static final String ACT2 = "ACT2";
public static final String POS = "POS";
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    // TODO Auto-generated method stub

    someAction(position);
}

public void someAction(int position){

    //we use the items of the listview as title of the next activity
    String course = listAdapter.getItem(position);

    //we retrieve the description of the juices from an array defined in arrays.xml
    String[] description = getResources().getStringArray(R.array.description);
    final String courselabel = description[position];

    //retrieve content for the dialog
    String[] dialogmessage = getResources().getStringArray(R.array.dialogmessage);
    final String dialogmsg = dialogmessage[position];


    Intent intent = new Intent(this, Activity2.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.putExtra(POS,lv.getPosition());
    intent.putExtra("message", message);
    startActivityForResult(intent, _.ACT2);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        lv.setPosition(mPosition);//HERE POSITION SETUP
    }
}
@Override
public int mPosition = 0;
    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    Intent data = getIntent();
    String msg =data.getStringExtra("message", "");
    mPosition = data.getIntExtra(Activity1.POS, mPosition);
}

@Override
public void finish() {     

    Intent data = new Intent();
    data.putExtra(Activity1.POS,mPosition);
    setResult(RESULT_OK, data); 

    super.finish();
}

请将您的代码放置在解决方案上下文中的方式和位置?@MaryJane,Activity1-这是您放置
public-mclick
的第一个活动。Activity2-是您的
MainActivityas
类。明白吗?你能根据你的解决方案修改我上面的代码吗?因为它在我的项目中变得很混乱。请。谢谢。请问如何以及在何处将您的代码与您的解决方案放在上下文中?@MaryJane,Activity1-这是您第一次将
public void onite mclick
放在此处的活动。Activity2-是您的
MainActivityas
类。明白吗?你能根据你的解决方案修改我上面的代码吗?因为它在我的项目中变得很混乱。请。谢谢