java - 添加时保存 ListView 位置

标签 java android

所以我有一个问题,我有一个名为 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);
}

}

我想存储他们在搜索之前所处的位置。

最佳答案

您正在使用临时搜索列表修改 ListView 。

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

每当您使用数组适配器时,Android 的默认布局都会用于填充 ListView 中的每一行。请使用以下代码获取项目点击方法上的文本。

TextView textView = (TextView) view.findViewById(R.id.list_content); 字符串文本 = textView.getText().toString();

关于java - 添加时保存 ListView 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45220383/

相关文章:

android - Google 健身自定义数据类型

java - 无法覆盖比较器的compare()方法

java - 使用 CrudRepository 检索多行

java - Android - 我怎样才能实现这个谷歌地图动画?

java - 没有列表项分隔符的 ListView 标题

android - ScrollView 允许内容溢出

java - 同一项目中的多个 android-support-v4 版本

java - 可互换的键/值 HashMap Set 结构

java - Log4J:如何将 OutputStream 或 Writer 重定向到 logger 的 writer(s)?

java - 我有 import org.apache.commons.io.FileUtils;在我的代码中,它可以在 Eclipse 上运行,但不能在命令行中运行