Java 在添加时保存ListView位置

Java 在添加时保存ListView位置,java,android,Java,Android,所以我有一个问题,我有一个名为testes的数组,它有一些位置,我使用这些位置来获取我点击的包裹的ID。但是当我使用搜索时,这些位置会发生变化,我不能存储它们原来的位置吗?代码如下: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_list); testList

所以我有一个问题,我有一个名为testes的数组,它有一些位置,我使用这些位置来获取我点击的包裹的ID。但是当我使用搜索时,这些位置会发生变化,我不能存储它们原来的位置吗?代码如下:

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test_list);

    testList = (ListView) findViewById(R.id.testList);
    ArrayAdapter<String> adapter = new Test_row_adapter(TestList.this,testes);




    testList.setAdapter(adapter);


    testList.setOnItemClickListener(
            new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {




                    int ID_WANTED=myDB.getAllIds().get(i);

                        Intent i2 = new Intent(TestList.this,TesteInfoDisplay.class);


                        String DateClickedDisciplina = myDB.getDisciplina(ID_WANTED);
                    String DateClickedSala = myDB.getSala(ID_WANTED);
                    String DateClickedDia = myDB.getDates(ID_WANTED);
                    String DateClickedHora = myDB.getHour(ID_WANTED);



                    i2.putExtra("dateID", ID_WANTED);
                    i2.putExtra("returnedData", DateClickedDia);
                    i2.putExtra("returnedHour", DateClickedHora);
                    i2.putExtra("returnedDisciplina", DateClickedDisciplina);
                    i2.putExtra("returnedSala", DateClickedSala);

                        startActivity(i2);

                    }

            }
    );
}

public static void RestartArray(){
   DataBaseHelper myDB = CustomApplication.getDatabaseHelper();
    for(int digg=1; contador2<=myDB.getHowMany(); contador2++) {



                int ID_WANTED = myDB.getAllIds().get(contador2 - 1);

                testes.add("Data:  " + myDB.getDates(ID_WANTED) + "        " + myDB.getHour(ID_WANTED) + "\n" + "Discilpina:  " + myDB.getDisciplina(ID_WANTED));
    }


}


@Override
public boolean onCreateOptionsMenu(Menu menu){
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu,menu);
    MenuItem searchItem = menu.findItem(R.id.item_search);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);

    searchView.setOnQueryTextListener(
            new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextSubmit(String query) {
                    return false;
                }

                @Override
                public boolean onQueryTextChange(String newText) {

                    ArrayList<String> tempList = new ArrayList<>();

                    for(String temp : testes){
                        if(temp.toLowerCase().contains(newText.toLowerCase())){
                            tempList.add(temp);
                        }
                        ArrayAdapter<String> adapter = new Test_row_adapter(TestList.this,tempList);
                        testList.setAdapter(adapter);


                    }
                    return true;
                }
            }
    );


    return super.onCreateOptionsMenu(menu);
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u test\u列表);
testList=(ListView)findViewById(R.id.testList);
ArrayAdapter=新的测试行适配器(TestList.this,testes);
setAdapter(适配器);
testList.setOnItemClickListener(
新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
int ID_=myDB.getAllIds().get(i);
Intent i2=新的Intent(TestList.this,TesteInfoDisplay.class);
字符串DateClickedDisciplina=myDB.getDisciplia(需要ID);
字符串DateClickedSala=myDB.getSala(需要ID);
字符串DateClickedDia=myDB.getDates(需要ID);
字符串DateClickedHora=myDB.getHour(需要ID);
i2.putExtra(“日期ID”,需要ID);
i2.putExtra(“返回的数据”,日期点击的数据);
i2.putExtra(“返回的小时”,日期点击时间);
i2.putExtra(“返回的Disciplina”,日期单击Disciplina);
i2.putExtra(“returnedSala”,DateClickedSala);
星触觉(i2);
}
}
);
}
公共静态void restarray(){
DataBaseHelper myDB=CustomApplication.getDatabaseHelper();

对于(int digg=1;contador2,您正在使用临时搜索列表修改列表视图

因此,您的原始列表不会被修改。因此,当您在搜索后单击该行时,获取所选行中的文本,并在“testes”列表中搜索文本的索引。这将为您提供文本在实际列表视图中的位置

无论何时使用array adapter,Android的默认布局都用于填充列表视图中的每一行。请使用下面的代码获取项目单击方法上的文本

TextView TextView=(TextView)view.findViewById(R.id.list\u content);
String text=textView.getText().toString();

您正在使用临时搜索列表修改列表视图

因此,您的原始列表不会被修改。因此,当您在搜索后单击该行时,获取所选行中的文本,并在“testes”列表中搜索文本的索引。这将为您提供文本在实际列表视图中的位置

无论何时使用array adapter,Android的默认布局都用于填充列表视图中的每一行。请使用下面的代码获取项目单击方法上的文本

TextView TextView=(TextView)view.findViewById(R.id.list\u content);
String text=textView.getText().toString();

那么位置应该是原始位置吗?很抱歉,我没有听到你的问题。但是你不必担心文本在列表中的位置。你所要做的就是在搜索之后,当你点击列表中的项目时,从列表中获取文本(我已经提到了如何从Listview中单击的位置获取文本)并在实际列表“testes”中搜索文本的位置。通过这种方式,您可以知道文本在实际列表视图中的位置。因此,在位置上,它应该是原始位置?很抱歉,我没有收到您的问题。但您不必担心文本在列表中的位置。您所要做的就是在搜索后,当您单击列表中的项目时,从列表中获取文本(我已经提到了如何从Listview中单击的位置获取文本)并在实际列表“testes”中搜索文本的位置。这样,您就可以知道文本在实际Listview中的位置。