Soru & Cevap

Lİstview'de birden fazla kelime ile arama

21.12.2017 - 07:16
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.

15 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-16490-1553546609.jpg
bektasesref
28.12.2017 - 01:20
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.
Profile picture for user raydingoz
raydingoz
21.12.2017 - 10:31
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 }