【问题标题】:Not Showing Correct Position While Searching in Listview在列表视图中搜索时未显示正确的位置
【发布时间】:2021-07-07 10:34:38
【问题描述】:
public class MainActivity extends AppCompatActivity {
  
    SearchView searchView;
    ListView listView;
    ArrayList list;
    ArrayAdapter adapter;

    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        searchView = findViewById(R.id.searchView);
        listView = findViewById(R.id.listView);

        list = new ArrayList<>();
        list.add("Apple");//0th item
        list.add("Apple");//1st item
        list.add("Banana");//2nd item
        list.add("Banana");//3rd item
        list.add("Pineapple");//4th item
        list.add("Pineapple");//5th item
        list.add("Orange");//6th item
        list.add("Orange");//7th item
        list.add("Mango");//8th item
        list.add("Mango");//9th item
        list.add("Grapes");//10th item
        list.add("Grapes");//11th item
        list.add("Lemon");//12th item
        list.add("Lemon");//13th item
        list.add("Melon");//14th item
        list.add("Watermelon");//15th item
        list.add("Watermelon");//16th item
        list.add("Papaya");//17th item
        list.add("Papaya");//18th item

        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,list);
        listView.setAdapter(adapter);

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                if(list.contains(query))
                {
                    // Toast.makeText(getApplicationContext(),query,Toast.LENGTH_SHORT).show();
                    adapter.getFilter().filter(query);
                }
                else
                {
                    Toast.makeText(MainActivity.this, "No Match found",Toast.LENGTH_LONG).show();
                }
                return false;
            }
            @Override
            public boolean onQueryTextChange(String newText) {
                adapter.getFilter().filter(newText);
                //Toast.makeText(getApplicationContext(),newText,Toast.LENGTH_SHORT).show();
                return false;
           }
        });
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                int itemPosition     = position;

                Toast.makeText(MainActivity.this,adapter.getItem(position)+ "",Toast.LENGTH_SHORT).show();
                String  itemValue    = (String) adapter.getItem(position);
                Toast.makeText(getApplicationContext(),
                        "Position :"+itemPosition+"  ListItem : " +itemValue , Toast.LENGTH_LONG)
                        .show();

            }
        });
    }
}

在这个程序中,我将苹果作为第 0 项和第一项,香蕉作为第 2 和第 3 项,依此类推.. 但是在搜索时,我想根据我点击的木瓜将木瓜显示为 17 号或 18 号。

如果不搜索,它将正确显示水果位置的数量。但在搜索时,它会显示列表视图中显示的 4 个项目是否根据点击显示为 0、1、2、3。请帮我弄清楚

【问题讨论】:

    标签: java android listview searchview toast


    【解决方案1】:

    如果您使用“P”进行搜索,则将返回菠萝和木瓜。最初在搜索之前 Pineapple 位于第 4 和第 5 位,Papaya 位于第 17 和第 18 位。但是当您搜索时,只会返回四个结果,因此 Pineapple 的位置为 0、1,Papaya 的位置为 2 和 3。项目的位置随着列表中项目的数量而变化。所以你看到的行为是预期的和正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多