انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ساخت سرچ برای وب ویو (WebView) (برنامه نویسی اندروید)

ساخت سرچ برای وب ویو (WebView) (برنامه نویسی اندروید)

#6
سلام

برای این کار باید CustomAdapter مربوطه رو از Filterable - Implement کنید و بعد از اون Filter خودتون رو درست کنید

کدهای فایل Activity_main.xml

کد:
<LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   android:padding="10dp"
   tools:context=".MainActivity" >

   <!-- Editext for Search -->

   <SearchView
       android:id="@+id/search_view"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:background="@drawable/search_view_border"
       android:iconifiedByDefault="false"
       android:padding="2dp"
       android:queryHint="Search...." />

    <!-- ListView -->

   <ListView
       android:id="@+id/list_view"
       android:layout_width="match_parent"
       android:layout_height="match_parent" />

</LinearLayout>

کد های مربوط به list_item.xml

کد:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:padding="2dp" >

   <ImageView
       android:id="@+id/flag"
       android:layout_width="80dp"
       android:layout_height="70dp"
       android:paddingLeft="10dp"
       android:paddingRight="10dp" />

   <TextView
       android:id="@+id/name"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginLeft="10dp"
       android:layout_marginTop="10dp"
       android:layout_toRightOf="@+id/flag"
       android:paddingBottom="10dp"
       android:text="txt"
       android:textColor="#000000"
       android:textSize="20sp" />

   <TextView
       android:id="@+id/code"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignLeft="@+id/name"
       android:layout_below="@+id/name"
       android:layout_marginLeft="5dp"
       android:text="txt"
       android:textColor="#000000"
       android:textSize="16sp" />

</RelativeLayout>


کدهای مربوط به کلاس Country.java

کد:
public class Country {

   String name;
   String iso_code;
   int flag;

   Country(String name, String iso_code, int flag) {
       this.name = name;
       this.iso_code = iso_code;
       this.flag = flag;
   }

   public String getIso_code() {
       return iso_code;
   }

   public void setIso_code(String iso_code) {
       this.iso_code = iso_code;
   }

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public int getFlag() {
       return flag;
   }

   public void setFlag(int flag) {
       this.flag = flag;
   }

}

کدهای مربوط به فایل CustomAdapter.java

کد:
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.TextView;

public class CustomAdapter extends BaseAdapter implements Filterable {

   Context context;
   ArrayList<Country> countrylist;
   ArrayList<Country> mStringFilterList;
   ValueFilter valueFilter;

   CustomAdapter(Context context , ArrayList<Country> countrylist) {
       this.context = context;
       this.countrylist = countrylist;
       mStringFilterList = countrylist;
   }

   @Override
   public int getCount() {
       return countrylist.size();
   }

   @Override
   public Object getItem(int position) {
       return countrylist.get(position);
   }

   @Override
   public long getItemId(int position) {
       return countrylist.indexOf(getItem(position));
   }

   @Override
   public View getView(int position , View convertView , ViewGroup parent ) {

       LayoutInflater mInflater = (LayoutInflater) context
               .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

       convertView = null;
       if (convertView == null) {
           convertView = mInflater.inflate(R.layout.list_item, null);

           TextView name_tv = (TextView) convertView.findViewById(R.id.name);
           TextView iso_tv = (TextView) convertView.findViewById(R.id.code);
           ImageView iv = (ImageView) convertView.findViewById(R.id.flag);

           Country country = countrylist.get(position);

           name_tv.setText(country.getName());
           iso_tv.setText(country.getIso_code());
           iv.setImageResource(country.getFlag());
       }
       return convertView;
   }

   @Override
   public Filter getFilter() {
       if (valueFilter == null) {
           valueFilter = new ValueFilter();
       }
       return valueFilter;
   }

   private class ValueFilter extends Filter {
       @Override
       protected FilterResults performFiltering(CharSequence constraint) {
           FilterResults results = new FilterResults();

           if (constraint != null && constraint.length() > 0) {
               ArrayList<Country> filterList = new ArrayList<Country>();
               for (int i = 0; i < mStringFilterList.size(); i++) {
                   if ( (mStringFilterList.get(i).getName().toUpperCase() )
                           .contains(constraint.toString().toUpperCase())) {

                       Country country = new Country(mStringFilterList.get(i)
                               .getName() ,  mStringFilterList.get(i)
                               .getIso_code() ,  mStringFilterList.get(i)
                               .getFlag());

                       filterList.add(country);
                   }
               }
               results.count = filterList.size();
               results.values = filterList;
           } else {
               results.count = mStringFilterList.size();
               results.values = mStringFilterList;
           }
           return results;

       }

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

   }

}

کدهای مربوط به فایل MainActivity.java

کد:
import java.util.ArrayList;
import android.app.Activity;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SearchView;

public class MainActivity extends Activity implements
       SearchView.OnQueryTextListener {

   ListView lv;
   SearchView search_view;

   String[] country_names , iso_codes ;
   TypedArray country_flags ;

   ArrayList<Country> countrylist ;
   CustomAdapter adapter;

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

       lv = (ListView) findViewById(R.id.list_view);
       search_view = (SearchView) findViewById(R.id.search_view);

       country_names = getResources().getStringArray(R.array.country_names);
       iso_codes = getResources().getStringArray(R.array.iso_Code);
       country_flags = getResources().obtainTypedArray(R.array.country_flags);

       countrylist = new ArrayList<Country>();
       for (int i = 0; i < country_names.length; i++) {
           Country country = new Country(country_names[i] , iso_codes[i] ,
                   country_flags.getResourceId(i, -1) );
           countrylist.add(country);
       }

       adapter = new CustomAdapter(getApplicationContext(), countrylist );
       lv.setAdapter(adapter);

       search_view.setOnQueryTextListener(this);
   }

   @Override
   public boolean onQueryTextChange(String newText) {
       adapter.getFilter().filter(newText);
       return false;
   }

   @Override
   public boolean onQueryTextSubmit(String query) {
       return false;
   }

}


میتونید از مثال بالا الگو برداری کنید و برنامه خودتون رو درست کنید
چون در برنامه شما از WebView استفاده شده
جهت جستجو در محتوای webView از متد زیر استفاده کنید

کد:
WebView.findAll
پاسخ
 سپاس شده توسط admin ، zanyyy ، sohrabjam


پیام‌های این موضوع
RE: ساخت سرچ برای وب ویو - توسط electroncompany - ۱۳۹۴/۱۱/۱۰, ۱۲:۴۰ ب.ظ
RE: ساخت سرچ برای وب ویو - توسط s.saeid - ۱۳۹۴/۱۱/۱۰, ۱۲:۵۹ ب.ظ
RE: ساخت سرچ برای وب ویو - توسط electroncompany - ۱۳۹۴/۱۱/۱۰, ۰۱:۰۵ ب.ظ
RE: ساخت سرچ برای وب ویو - توسط s.saeid - ۱۳۹۴/۱۱/۱۰, ۰۱:۳۷ ب.ظ
RE: ساخت سرچ برای وب ویو - توسط mahdi10539 - ۱۳۹۴/۱۱/۱۰, ۰۳:۴۲ ب.ظ
RE: ساخت سرچ برای وب ویو - توسط electroncompany - ۱۳۹۴/۱۱/۱۰, ۰۴:۰۶ ب.ظ
RE: ساخت سرچ برای وب ویو - توسط electroncompany - ۱۳۹۴/۱۱/۱۰, ۰۴:۱۳ ب.ظ
RE: ساخت سرچ برای وب ویو - توسط mahdi10539 - ۱۳۹۴/۱۱/۱۰, ۰۴:۲۳ ب.ظ
RE: ساخت سرچ برای وب ویو - توسط electroncompany - ۱۳۹۴/۱۱/۱۰, ۰۵:۳۳ ب.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان