🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / Android RMOS / Listview de arama yapmak actionBar a arama ekleme SearchView menu oluşturma

1-) Android RMOS - Listview de arama yapmak actionBar a arama ekleme SearchView menu oluşturma

KAYNAK : http://codetheory.in/android-filters/

1-) Android RMOS - menu_arizalistesi.xml oluşturmak için -> menuiconu-> res-> menu -> new menu resource file

 

<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" >
    <
item android:id="@+id/action_search"
        
app:actionLayout="@layout/activity_order_taker_list"
        
android:orderInCategory="5"
        
android:title="Search"
        
android:icon="@android:drawable/ic_menu_search"
        
app:showAsAction="always|collapseActionView"
        
app:actionViewClass="android.support.v7.widget.SearchView" />
</
menu>

 

2-) OrderTakerList.java

 

import android.support.v7.widget.SearchView;

 

public class OrderTakerList extends AppCompatActivity {

...

SearchView searchView;
MenuItem
searchItem;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.
menu_arizalistesi, menu);
    
searchItem = menu.findItem(R.id.action_search);
    
searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        
@Override
        
public boolean onQueryTextSubmit(String query) { // klavyedeki enter tuşuna basarsa buraya düşer
            
searchView.clearFocus();
            
return true;
        }

        
@Override
        
public boolean onQueryTextChange(String newText) { // girilen stringi komple buraya yollar
            
Load_List(newText);
            
return false;
        }
    });
    
return super.onCreateOptionsMenu(menu);
}

}

-------------------------------------------ADAPTER KISMINDA İSE-------------------------------------------

 

1-) Android RMOS - OrderTakerListItemAdapter.java

 

package com.ramazan.user.rmospersonel.Tools.Adapter;

import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Filter;
import android.widget.TextView;

import com.ramazan.user.rmospersonel.Classes.OrderTakerListItem;
import com.ramazan.user.rmospersonel.R;

import java.util.ArrayList;

// BaseAdapter  implements Filterable { // bu şekildede olabilir


public class OrderTakerListItemAdapter extends ArrayAdapter<com.ramazan.user.rmospersonel.Classes.OrderTakerListItem> {

    
public ArrayList<OrderTakerListItem>  mContacts, mList;
    
private Filter  mContactsFilter;

    
public OrderTakerListItemAdapter(Context context, ArrayList<OrderTakerListItem> objects) {
        
super(context, 0, objects);
        
this.mList = objects;
        
this.mContacts = objects;
    }


    
@Override
    
public View getView(int position, View convertView, ViewGroup parent) {
       
if (mList.size() <= position) {
            convertView = LayoutInflater.
from(getContext()).inflate(R.layout.layout_fault_item, parent, false);
            convertView.setVisibility(View.
GONE);
            
return convertView;
        }
        OrderTakerListItem item =
mList.get(position);

        
if (convertView == null) {
            convertView = LayoutInflater.
from(getContext()).inflate(R.layout.layout_fault_item, parent, false);
        }

        convertView.setVisibility(View.
VISIBLE);
        convertView.setBackgroundColor(Color.
parseColor(item.getListType().getColor()));

        TextView txt_1 = (TextView) convertView.findViewById(R.id.
txtOrderTaker_Fault1);
        TextView txt_2 = (TextView) convertView.findViewById(R.id.
txtOrderTaker_Fault2);
        TextView txt_3 = (TextView) convertView.findViewById(R.id.
txtOrderTaker_Fault3);
        TextView txt_4 = (TextView) convertView.findViewById(R.id.
txtOrderTaker_Fault4);
        TextView txt_5 = (TextView) convertView.findViewById(R.id.
txtOrderTaker_Fault5);
        TextView txt_6 = (TextView) convertView.findViewById(R.id.
txtAciklama);
        TextView txt_7 = (TextView) convertView.findViewById(R.id.
txtPersonelAta);


        
if (!item.getAtananPersonel().equals("") && !item.getSTATU().equals("OKEY") && !item.getSTATU().equals("BEKLEMEDE") && !item.getSTATU().equals("SERVIS")) {
            convertView.setBackgroundColor(Color.
rgb(247, 232, 15));
        }

        txt_1.setText(item.getFAULT() +
" - " + item.getSUB_FAULT());
        txt_2.setText(item.getDEPARTMENT() +
" - " + item.getSUB_DEPARTMENT());
        txt_3.setText(
"Bildiren : " + item.getDECLARATIVE());
        txt_4.setText(item.getDATE() +
" " + item.getTIME());
        txt_5.setText(item.getPRIORTY());
        txt_6.setText(
"Açıklama : \n" + item.getNOTE());
        txt_7.setText(
"Atanan : \n" + item.getAtananPersonel());

        
return convertView;
    }

    
@Override
    
public Filter getFilter() {
        
if (mContactsFilter == null)
            
mContactsFilter = new ContactsFilter();

        
return mContactsFilter;
    }
    
private class ContactsFilter extends Filter {

        
@Override
        
protected FilterResults performFiltering(CharSequence constraint) {
            FilterResults results =
new FilterResults();
            
if (constraint == null || constraint.length() == 0) {
                results.
values = mContacts;
                results.
count = mContacts.size();
            }
else {
                ArrayList<OrderTakerListItem> filteredContacts =
new ArrayList<OrderTakerListItem>();
                
for (OrderTakerListItem c : mContacts) {
                    String deger=c.getSUB_DEPARTMENT().toUpperCase()+c.getDEPARTMENT().toUpperCase()+c.getAtananPersonel().toUpperCase()+
                            c.getNOTE().toUpperCase()+c.getFAULT().toUpperCase()+c.getSUB_FAULT().toUpperCase();
                    String karsilastir=constraint.toString().toUpperCase();
                    
if (deger.contains(karsilastir)) {
                        filteredContacts.add(c);
                    }
                }
                results.
values = filteredContacts;
                results.
count = filteredContacts.size();
            }
            
return results;
        }

        
@Override
        
protected void publishResults(CharSequence constraint, FilterResults results) {
            
mList = (ArrayList<OrderTakerListItem>) results.values;
            notifyDataSetChanged();
        }
    }

}

 

2-) MainActivty.java -> filter için -> Adapter.getFilter().filter(filter);

 

private void Load_List(String filter) { // "" gelirse tüm listeyi getir aksi takdirde arananı getir


    
if (Constants.mOrderTakerListItemArrayList != null) {
        
orderTakerListItemAdapter = new OrderTakerListItemAdapter(getApplicationContext(), Constants.mOrderTakerListItemArrayList); // dolu Arraylist olucak
        
lst_List.setAdapter(orderTakerListItemAdapter);

        
lst_List.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            
@Override
            
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                
//mOrderTakerListItem = Constants.mOrderTakerListItemArrayList.get(position);
                
mOrderTakerListItem =orderTakerListItemAdapter.mList.get(position);
                
if (Constants.mOrderTakerUser.isMOBIL_CHECK()) {
                    
if (mOrderTakerListType == Enums.OrderTakerListType.ONARILAN) {
                        asycStockList a =
new asycStockList();
                        a.execute(
mOrderTakerListItem.getID());
                    }
else if (mOrderTakerListType == Enums.OrderTakerListType.ARIZA_ATAMA) {
                        
// Toast.makeText(OrderTakerList.this, "ID : "+mOrderTakerListItem.getID()+" Arıza Atama Yapılacak.", Toast.LENGTH_LONG).show();
                        
Intent intent_atama = new Intent(OrderTakerList.this, OrderTakerAtama.class);
                        intent_atama.putExtra(
"id", "" + mOrderTakerListItem.getID());
                        intent_atama.putExtra(
"aciklama", "" + mOrderTakerListItem.getNOTE());
                        startActivity(intent_atama);
                    }
else

                    
{
                        Intent updateIntent =
new Intent(OrderTakerList.this, OrderTakerUpdate.class);
                        updateIntent.putExtra(
"INDEX", position);
                        startActivity(updateIntent);
                    }
                }
else {
                    Toast.
makeText(getApplicationContext(), "Bu İşlemi Yapmaya Yetkiniz Yoktur...", Toast.LENGTH_SHORT).show();
                }
            }
        });


        
if (!filter.equals("")) {
            
orderTakerListItemAdapter.getFilter().filter(filter);
        }
    }
}

 

 

3-) ARAMAYI TEMİZLEMEK İÇİN AŞAĞIDAKİNİ UYGULA MESALA ONRESUME METODUNDA


searchView.setQuery("", false);
searchView.clearFocus();
searchItem.collapseActionView();

 

4-) search buttonun kaybolması için aşağıdakini uygula

 

if (searchItem != null) searchItem.setVisible(false);

 

 

 

 

 

 

 2021 Ocak 18 Pazartesi
 409