🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / Android RMOS / SearchableSpinner aranabilir combobox kodları entegreli içinde aramali contains

1-) Android RMOS - SearchableSpinner aranabilir combobox kodları entegreli

 

 

kaynak : https://github.com/MdFarhanRaja/SearchableSpinner

 

kendi kaynağım : https://drive.google.com/open?id=1MGFyjzHa3HgYkh2hqSbvdncWM8lzMTtt

 

 

ÖNEMLİ YERLER aşağıdadır

 

2-) ArrayAdapterWithContainsFilter.java

 

package com.webpos.ramazan.rmos.rmossay.SpinnerDialog;

import android.app.Activity;
import android.content.Context;
import android.support.annotation.NonNull;
import android.widget.ArrayAdapter;
import android.widget.Filter;

import com.webpos.ramazan.rmos.rmossay.MainActivity;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

public class ArrayAdapterWithContainsFilter<S> extends ArrayAdapter {

    
private List<MainActivity.cari> items = null;
    
private ArrayList<MainActivity.cari> arraylist;

    
public ArrayAdapterWithContainsFilter(Activity context, int items_view, ArrayList<MainActivity.cari> items) {
        
super(context,items_view,items);
       
this.items = items;
        
this.arraylist = new ArrayList<MainActivity.cari>();
        
this.arraylist.addAll(items);
    }

    
@NonNull
    @Override
    
public Filter getFilter() {
        
return super.getFilter();
    }

    
// Filter Class
    
public void getContainsFilter(String charText) {
        charText = charText.toLowerCase(Locale.
getDefault());
            
items.clear();
        
if (charText.length() == 0) {
            
items.addAll(arraylist);
        }
        
else
        
{
            
for (MainActivity.cari item : arraylist)
            {
                
if (item.getAd().toLowerCase(Locale.getDefault()).contains(charText))
                {
                    
items.add(item);
                }
            }
        }
        notifyDataSetChanged();
    }
}

 

3-) OnSpinerItemClick interface

package com.webpos.ramazan.rmos.rmossay.SpinnerDialog;
import com.webpos.ramazan.rmos.rmossay.MainActivity;
public interface OnSpinerItemClick
{
    
public void onClick(MainActivity.cari item, int position);
}

4-) SpinnerDialog.java

package com.webpos.ramazan.rmos.rmossay.SpinnerDialog;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.webpos.ramazan.rmos.rmossay.MainActivity;
import com.webpos.ramazan.rmos.rmossay.R;

import java.util.ArrayList;
public class SpinnerDialog {
    ArrayList<MainActivity.cari>
items;
    Activity
context;
    String
dTitle, closeTitle = "Close";
    OnSpinerItemClick
onSpinerItemClick;
    AlertDialog
alertDialog;
    
int pos;
    
int style;
    
boolean cancellable = false;
    
boolean showKeyboard = false;
    
boolean useContainsFilter = false;
    
int titleColor, searchIconColor, searchTextColor, itemColor, itemDividerColor, closeColor;

    
private void initColor(Context context) {
        
this.titleColor = context.getResources().getColor(R.color.colorBlack);
        
this.searchIconColor = context.getResources().getColor(R.color.colorBlack);
        
this.searchTextColor = context.getResources().getColor(R.color.colorBlack);
        
this.itemColor = context.getResources().getColor(R.color.colorBlack);
        
this.closeColor = context.getResources().getColor(R.color.colorBlack);
        
this.itemDividerColor = context.getResources().getColor(R.color.colorLightGray);
    }

    
public SpinnerDialog(Activity activity, ArrayList<MainActivity.cari> items, String dialogTitle) {
        
this.items = items;
        
this.context = activity;
        
this.dTitle = dialogTitle;
        initColor(
context);
    }

    
public SpinnerDialog(Activity activity, ArrayList<MainActivity.cari> items, String dialogTitle, String closeTitle) {
        
this.items = items;
        
this.context = activity;
        
this.dTitle = dialogTitle;
        
this.closeTitle = closeTitle;
        initColor(
context);
    }

    
public SpinnerDialog(Activity activity, ArrayList<MainActivity.cari> items, String dialogTitle, int style) {
        
this.items = items;
        
this.context = activity;
        
this.dTitle = dialogTitle;
        
this.style = style;
        initColor(
context);
    }

    
public SpinnerDialog(Activity activity, ArrayList<MainActivity.cari> items, String dialogTitle, int style, String closeTitle) {
        
this.items = items;
        
this.context = activity;
        
this.dTitle = dialogTitle;
        
this.style = style;
        
this.closeTitle = closeTitle;
        initColor(
context);
    }

    
public void bindOnSpinerListener(OnSpinerItemClick onSpinerItemClick1) {
        
this.onSpinerItemClick = onSpinerItemClick1;
    }

    
public void showSpinerDialog(ArrayList<MainActivity.cari> itemsT) {
        
items=new ArrayList<>(itemsT);
        AlertDialog.Builder adb =
new AlertDialog.Builder(context);
        View v =
context.getLayoutInflater().inflate(R.layout.dialog_layout, null);
        TextView rippleViewClose = (TextView) v.findViewById(R.id.
close);
        TextView title = (TextView) v.findViewById(R.id.
spinerTitle);
        ImageView searchIcon = (ImageView) v.findViewById(R.id.
searchIcon);
        rippleViewClose.setText(
closeTitle);
        title.setText(
dTitle);
        
final ListView listView = (ListView) v.findViewById(R.id.list);

        ColorDrawable sage =
new ColorDrawable(itemDividerColor);
        listView.setDivider(sage);
        listView.setDividerHeight(
1);

        
final EditText searchBox = (EditText) v.findViewById(R.id.searchBox);
        
if (isShowKeyboard()) {
            showKeyboard(searchBox);
        }

        title.setTextColor(
titleColor);
        searchBox.setTextColor(
searchTextColor);
        rippleViewClose.setTextColor(
closeColor);
        searchIcon.setColorFilter(
searchIconColor);


//        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, R.layout.items_view, items);
        
final ArrayAdapterWithContainsFilter<String> adapter = new ArrayAdapterWithContainsFilter<String>(context, R.layout.items_view, items) {
            
@NonNull
            @Override
            
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
                View view =
super.getView(position, convertView, parent);
                TextView text1 = view.findViewById(R.id.
text1);
                text1.setText(
items.get(position).getAd());
                text1.setTextColor(
itemColor);
                
return view;
            }
        };
        listView.setAdapter(adapter);
        adb.setView(v);
        
alertDialog = adb.create();
        
alertDialog.getWindow().getAttributes().windowAnimations = style;//R.style.DialogAnimations_SmileWindow;

        
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            
@Override
            
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                TextView t = (TextView) view.findViewById(R.id.
text1);
                
for (int j = 0; j < items.size(); j++) {
                    String ad=
items.get(j).getAd();
                    String txt=t.getText().toString();
                    
if (txt.equalsIgnoreCase(ad)) { // Ben Yorum satırı yaptım
                        
pos = j;
                        
break;
                    }
                }
               
// onSpinerItemClick.onClick(t.getText().toString(), pos);
                
onSpinerItemClick.onClick(items.get(pos), pos);
                closeSpinerDialog();
            }
        });

        searchBox.addTextChangedListener(
new TextWatcher() {
            
@Override
            
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }
            
@Override
            
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            
@Override
            
public void afterTextChanged(Editable editable) {
                
if (isUseContainsFilter()) {
                    
adapter.getContainsFilter(searchBox.getText().toString());
                }
else {
                    
adapter.getFilter().filter(searchBox.getText().toString());
                }
            }
        });

        rippleViewClose.setOnClickListener(
new View.OnClickListener() {
            
@Override
            
public void onClick(View v) {
                closeSpinerDialog();
            }
        });
        
alertDialog.setCancelable(isCancellable());
        
alertDialog.setCanceledOnTouchOutside(isCancellable());
        
alertDialog.show();
    }

    
public void closeSpinerDialog() {
        hideKeyboard();
        
if (alertDialog != null) {
            
alertDialog.dismiss();
        }
    }

    
private void hideKeyboard() {
        
try {
            InputMethodManager inputManager = (InputMethodManager)
context.getSystemService(Context.INPUT_METHOD_SERVICE);
            inputManager.hideSoftInputFromWindow(
context.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
        }
catch (Exception e) {
        }
    }

    
private void showKeyboard(final EditText ettext) {
        ettext.requestFocus();
        ettext.postDelayed(
new Runnable() {
                               
@Override
                               
public void run() {
                                   InputMethodManager keyboard = (InputMethodManager)
context.getSystemService(Context.INPUT_METHOD_SERVICE);
                                   keyboard.showSoftInput(
ettext, 0);
                               }
                           }
                ,
200);
    }

    
private boolean isCancellable() {
        
return cancellable;
    }

    
public void setCancellable(boolean cancellable) {
        
this.cancellable = cancellable;
    }

    
private boolean isShowKeyboard() {
        
return showKeyboard;
    }

    
private boolean isUseContainsFilter() {
        
return useContainsFilter;
    }


    
public void setShowKeyboard(boolean showKeyboard) {
        
this.showKeyboard = showKeyboard;
    }

    
public void setUseContainsFilter(boolean useContainsFilter) {
        
this.useContainsFilter = useContainsFilter;
    }

    
public void setTitleColor(int titleColor) {
        
this.titleColor = titleColor;
    }

    
public void setSearchIconColor(int searchIconColor) {
        
this.searchIconColor = searchIconColor;
    }

    
public void setSearchTextColor(int searchTextColor) {
        
this.searchTextColor = searchTextColor;
    }

    
public void setItemColor(int itemColor) {
        
this.itemColor = itemColor;
    }

    
public void setCloseColor(int closeColor) {
        
this.closeColor = closeColor;
    }

    
public void setItemDividerColor(int itemDividerColor) {
        
this.itemDividerColor = itemDividerColor;
    }
}

 

5-) MainActivity.java

 

package com.webpos.ramazan.rmos.rmossay;

import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.codetroopers.betterpickers.OnDialogDismissListener;
import com.codetroopers.betterpickers.calendardatepicker.CalendarDatePickerDialogFragment;
import com.codetroopers.betterpickers.calendardatepicker.MonthAdapter;
import com.webpos.ramazan.rmos.rmossay.SpinnerDialog.OnSpinerItemClick;
import com.webpos.ramazan.rmos.rmossay.SpinnerDialog.SpinnerDialog;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.TimeZone;

public class MainActivity extends AppCompatActivity  {
    Button
btnTarih, btnCari;
    
public static boolean yes = false;
    Calendar
c;
    
public static String sayimGirisTar = "";

    ArrayList<cari>
items = new ArrayList<>();
    ArrayList<cari>
itemsCopy = new ArrayList<>();
    SpinnerDialog
spinnerDialog;

    
   
    
@Override
    
protected void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_main);
        
btnTarih = findViewById(R.id.btnTarih);
        
btnCari = findViewById(R.id.btnCari);
        cariEkle();
        ShowDialog();

    }

    
public void cariEkle() {
        
items.clear();
        
items.add(new cari("1", "Metro"));
        
items.add(new cari("2", "Delhi"));
        
items.add(new cari("3", "Bengaluru"));
        
items.add(new cari("4", "Hyderabad"));
        
items.add(new cari("5", "Ahmedabad"));
        
items.add(new cari("6", "Chennai"));
        
items.add(new cari("7", "Kolkata"));
        
items.add(new cari("8", "Surat"));
        
items.add(new cari("9", "Pune"));
        
items.add(new cari("10", "Jaipur"));
        
items.add(new cari("11", "Lucknow"));
        
items.add(new cari("12", "Kanpur"));

        
itemsCopy = new ArrayList<>(items);
    }

    
public class cari {
        String
ad, id;

        
public String getAd() {
            
return ad;
        }

        
public void setAd(String ad) {
            
this.ad = ad;
        }

        
public String getId() {
            
return id;
        }

        
public void setId(String id) {
            
this.id = id;
        }

        cari(String id, String ad) {
            
this.id = id;
            
this.ad = ad;
        }
    }

    
public void ShowDialog() {
        
//spinnerDialog = new SpinnerDialog(MainActivity.this, items, "Cari Seçiniz", "İptal");// With No Animation
        
spinnerDialog = new SpinnerDialog(MainActivity.this, items, "Cari Seçiniz", R.style.DialogAnimations_SmileWindow, "İptal");// With Animation

        
spinnerDialog.setCancellable(true); // for cancellable
        
spinnerDialog.setShowKeyboard(true);// for open keyboard by default

        
spinnerDialog.setUseContainsFilter(true);


        
spinnerDialog.bindOnSpinerListener(new OnSpinerItemClick() {
            
@Override
            
public void onClick(cari item, int position) {
                
btnCari.setText(item.getAd());
                Toast.
makeText(MainActivity.this, item.getId() + "  " + item.getAd() + " " + position + "", Toast.LENGTH_SHORT).show();
            }
        });

        
btnCari.setOnClickListener(new View.OnClickListener() {
            
@Override
            
public void onClick(View v) {
                
spinnerDialog.showSpinerDialog(itemsCopy);
            }
        });
    }
}

5-) res-> anim -> slide_in_bottom.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
           
android:duration="500"
           
android:fromYDelta="100%p"/>

6-) res-> anim -> slide_out_top.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    
android:duration="500"
    
android:toYDelta="100%p" />

 

7-) items_view.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    
android:layout_width="match_parent"
    
android:layout_height="match_parent"
    
android:id="@+id/text1"
    
android:padding="13dp"
    
android:textSize="16sp"
    
android:gravity="center|left">

</
TextView>

 

8-) dialog_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    
xmlns:app="http://schemas.android.com/apk/res-auto"
    
android:layout_width="match_parent"
    
android:layout_height="wrap_content"
    
android:background="#ffffff"
    
android:id="@+id/mainView"
    
android:orientation="vertical">

    <
LinearLayout
        
android:layout_width="match_parent"
        
android:layout_height="match_parent"
        
android:layout_margin="15dp"
        
android:orientation="vertical">

        <
TextView
            
android:id="@+id/spinerTitle"
            
android:layout_width="match_parent"
            
android:layout_height="wrap_content"
            
android:text="Select or Search Items"
            
android:textSize="17sp"
            
android:textStyle="bold" />

        <
LinearLayout
            
android:layout_width="match_parent"
            
android:layout_height="wrap_content"
            
android:gravity="center|left"
            
android:orientation="horizontal">

            <
ImageView
                
android:id="@+id/searchIcon"
                
android:layout_width="30dp"
                
android:layout_height="30dp"
                
android:src="@drawable/ic_search_black_36dp" />

            <
EditText
                
android:id="@+id/searchBox"
                
android:layout_width="match_parent"
                
android:layout_height="40dp"
                
android:layout_marginLeft="5dp"
                
android:background="#ffffff"
                
android:inputType="text" />

        </
LinearLayout>

        <
View
            
android:id="@+id/viewLine"
            
android:layout_width="wrap_content"
            
android:layout_height="0.1dp"
            
android:background="#d1d1d1" />

        <
ListView
            
android:id="@+id/list"
            
android:layout_width="match_parent"
            
android:layout_height="300dp"
            
android:divider="#d1d1d1"
            
android:dividerHeight="0.1dp"/>

        <
TextView
            
android:clickable="true"
            
android:padding="5dp"
            
android:layout_gravity="right"
            
android:id="@+id/close"
            
android:layout_width="wrap_content"
            
android:layout_height="wrap_content"
            
android:text="Close" />

    </
LinearLayout>

</
LinearLayout>

 

9-) colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <
color name="colorPrimary">#008577</color>
    <
color name="colorPrimaryDark">#00574B</color>
    <
color name="colorAccent">#D81B60</color>
    
<!--<color name="colorAccent">#D81B60</color>-->

    
<color name="colorDarkGray">#949494</color>
    <
color name="colorGray">#C9C9C9</color>
    <
color name="colorLightGray">#E9E7E7</color>
    <
color name="colorBlack">#000000</color>
    <
color name="colorWhite">#FFFFFF</color>
</
resources>

 

 

10-) styles.xml

 

<resources>

    
<!-- Base application theme. -->
    
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        
<!-- Customize your theme here. -->
        
<item name="colorPrimary">@color/colorPrimary</item>
        <
item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <
item name="colorAccent">@color/colorAccent</item>
    </
style>

    <
style name="DialogAnimations" />
    <
style name="DialogAnimations.SmileWindow">
        <
item name="android:windowEnterAnimation">@anim/slide_in_bottom</item>
        <
item name="android:windowExitAnimation">@anim/slide_out_top</item>
    </
style>

</
resources>

 

 2021 Ocak 18 Pazartesi
 454