Turkcell | Geleceği Yazanlar

Lİstview'de birden fazla kelime ile arama

public class XXXXXXXX extends AppCompatActivity {

    EditText etFilter;
    ListView lst;
    ArrayList <String> list = new ArrayList<>();
    Context context = this;
    private ListAdapter adapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dorduncu_sayfa);
        etFilter = (EditText)findViewById(R.id.etFilter);
        lst = (ListView)findViewById(R.id.lst);
        list.add("Photoshop Eğitimi");
        list.add("x Eğitimleri");
        list.add("y İşlemleri Eğitimi");
        



        lst.setAdapter(adapter);

        lst.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                final String item=(String)parent.getItemAtPosition(position);


                if ("Photoshop Eğitimi".equals(item)) {
                    Intent myIntent = new Intent(view.getContext(), AdayMemur.class);
                    startActivityForResult(myIntent, 0);

                }

                if ("x Eğitimleri".equals(item)) {
                    Intent myIntent = new Intent(view.getContext(), AfadEgitimi.class);
                    startActivityForResult(myIntent, 1);

                }


        }



        });

        lst.setAdapter(new ArrayAdapter<String>(context,android.R.layout.simple_list_item_1,android.R.id.text1, list));



        etFilter.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                ArrayList <String> tempList = new ArrayList<>();
                for (int i = 0; i < list.size(); i++){
                    if (list.get(i).toUpperCase().contains(s.toString().toUpperCase())){
                        tempList.add(list.get(i));

                    }
                }

                if (tempList != null && tempList.size() > 0){
                    lst.setAdapter(new ArrayAdapter<String>(context,android.R.layout.simple_list_item_1,android.R.id.text1, tempList));


                }


            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });




    }
}

Arkadaşlar kodlar yukarıdaki gibi. Şuan arama kısmında "phot........" yazdığımda sadece photoshop eğitimi listviewde geliyor bunda sorun yok. Ayrıca onclick özelliği bulunmakta, arama sonucu listview'de getirilen başlığa tıklanınca içerik gelmekte. benim yapmak istediğim "photoshop" yazarken de photoshop gelsin, ayrıca belirlediğim herhangi bir anahtar kelimeyi yazınca da yine "photoshop" gelsin. Örneği "grafik tasarım" yazarsam da photoshop gelsin.

 

Şu şekilde birşey geldi aklıma doğaçlama (cahillikten tabi);

" if (("Photoshop Eğitimi".equals(item)) &&("grafik tasarım".equals(item)) {
                    Intent myIntent = new Intent(view.getContext(), AdayMemur.class);
                    startActivityForResult(myIntent, 0);   

 

Tabi bir sonuç alamadım. Birden fazla anahtar kelime ile arama mümkün mü?

Bir diğer sorum ise onclick özelliği ile tıkladığımda açılan içerikten herhangi bir kelime ile arama yapma ihtimalim var mı?

Kaynak video veya belge de paylaşabilirseniz çok sevinirim. İyi çalışmalar herkese.

raydingoz

Per, 21/12/2017 - 22:29
https://www.youtube.com/watch?v=PPXiZDWPOcI database ile işin içinden çıkabilirsin. list item ile uğraşma hiç, biraz daha yorucu olacak eğer hiç database ile uğraşmadıysanız. veya şu?: "startsWith" : https://www.youtube.com/watch?v=Ao317xxnWmY if (item.startsWith("pho") || item.startsWith("graf")) { //eğer item stirngi "pho" veya "graf" ile başlıyorsa koşul çalışır //koşul }

    0

    Eşref Bektaş

    Studio Billion - 28 Aralık 2017

    Equals veya starts-ends with kullanmanızı ÖNERMEM. Herhangi bir yerde olabilir onun için Contains daha çok işinizi görecektir. Ek olarak aranacak VE taranacak değerleri Trim (baş ve sondaki boşlukları silme) ve toLowerCase (küçük harf yapıp öyle kıyaslarsanız daha sağlam sonuç alırsınız.

    0

    raydingoz

    21 Aralık 2017

    https://www.youtube.com/watch?v=PPXiZDWPOcI database ile işin içinden çıkabilirsin. list item ile uğraşma hiç, biraz daha yorucu olacak eğer hiç database ile uğraşmadıysanız.

    veya şu?: “startsWith” : https://www.youtube.com/watch?v=Ao317xxnWmY

    if (item.startsWith("pho") || item.startsWith("graf")) { //eğer item stirngi "pho" veya "graf" ile başlıyorsa koşul çalışır //koşul }

    Bu soruya cevap vermek için üye olmanız veya giriş yapmanız gerekmektedir.