【问题标题】:listView filter searchlistView 过滤器搜索
【发布时间】:2018-09-24 23:47:02
【问题描述】:

我希望通过 editText 过滤 listView。 我的 ListView 由 ArrayString 填充,当我过滤它时,一切正常。但是我无法识别单击的元素。当我过滤 listView 并单击过滤后的项目时,我希望获得原始 arrayString 中的行号以创建 Intent。当我单击过滤后的 arrayString 中的项目时,我的代码为 0 并且不正确。如果我搜索“Anche Se Pesa”,我想返回第 2 行,就像原始 ArrayString 中的位置一样。

<string-array name="titoli">
        <item>An Val Dondona</item>
        <item>Anche Mio Padre</item>
        <item>Anche Se Pesa</item>
        <item>Andremo In Francia</item>
        <item>Aprite Le Porte</item>
        <item>Arda Berghem</item>
        <item>Ascoltate Amici Cari</item>
        <item>Ave, O Vergine</item>
        <item>Aver na Figlia Sola Soletta</item>
        <item>Ancora sti quatro</item>
        <item>Andouma Prou</item>

    </string-array>

这是代码

public class activity_titoli extends AppCompatActivity {

    Button btt_backHome;
    ListView lV_titoli;
    EditText eT_search;
    private ArrayAdapter<CharSequence> adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_titoli);

        btt_backHome = (Button) findViewById(R.id.btt_backHome);
        lV_titoli = (ListView) findViewById(R.id.lV_titoli);
        eT_search = (EditText) findViewById(R.id.eT_search);

        adapter = ArrayAdapter.createFromResource(this, R.array.titoli, android.R.layout.simple_list_item_1);
        lV_titoli.setAdapter(adapter);

        final Intent to_Home = new Intent (this , Activity_Main.class);

        eT_search.addTextChangedListener(new TextWatcher() {

            @Override
            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1,
                                          int arg2, int arg3) {
                // TODO Auto-generated method stub
            }

            @Override
            public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                                      int arg3) {
                (activity_titoli.this).adapter.getFilter().filter(arg0);
            }
        });

        btt_backHome.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(to_Home);
            }
        });

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

                Log.e("Element: " , Integer.toString(i));

            }
        });
    }
}

【问题讨论】:

    标签: android arrays string filter


    【解决方案1】:

    试试这个代码:

    lV_titoli.setOnItemClickListener(new AdapterView.OnItemClickListener(){
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    Resources res = getResources();
                    List<CharSequence> list = Arrays.asList(res.getStringArray(R.array.titoli));
                    Log.e("Element: " , Integer.toString(list.indexOf(adapter.filgetItem(i))));
    
                }
            });
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2013-02-10
      • 2018-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      相关资源
      最近更新 更多