آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

کند فیلتر شدن Listview محتوی اطلاعات دیتابیس 

Lamanta  11 سال پیش  11 سال پیش
0 0

سلام
من در حال نوشتن یک دیکشنری انگلیسی به فارسی و بلعکس هستم...
متاسفانه با استفاده  ازسورس آماده  Lazzy Listview داخل انجمن نتونستم پروژه ام رو سبک کنم و پروژه در ابتدای کار حدود 50 هزار لیست داره و در فیلتر کردن کلمات ، تایپ کردن و آپدیت کردن لیست خیلی کنده ،  لطفا منو در استفاده از Lazzy Listview در پروژه خودم و استفاده از یک فیلتر بهینه به موجب کاهش استفاده از  رم و افزایش سرعت راهنمایی کنید...




 کلاس  MainActivity 

public class MainActivity extends Activity {

    // Declare Variables

    ListView                         list;
    ImageView                        clearText;
    EditText                         editsearch;
    Typeface                         edtSearchFont;
    static String[]                  word;
    static int[]                     index;
    static ListViewAdapter           adapter;
    static ArrayList<ListViewStruct> arrayStructList = new ArrayList<ListViewStruct>();
    Context                          context;


    // onCreate

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview_main);
        context = this;

        Cursor en = G.database.rawQuery("SELECT * FROM English", null);
        word = new String[en.getCount()];
        index = new int[en.getCount()];
        int i = 0;
        ListViewStruct wp = null;
        if (en.moveToFirst())
        {
            do
            {
                try {
                    word[i] = en.getString(en.getColumnIndex("English_Word"));
                    index[i] = en.getInt(en.getColumnIndex("Word_ID"));
                    wp = new ListViewStruct(word[i], index[i]);
                    arrayStructList.add(wp);
                    i++;

                }
                catch (Exception e) {

                    e.printStackTrace();
                }
            }
            while (en.moveToNext());
        }
        en.close();

        list = (ListView) findViewById(R.id.listview);
        adapter = new ListViewAdapter(this, arrayStructList);
        list.setAdapter(adapter);
        editsearch = (EditText) findViewById(R.id.search);
        edtSearchFont = Typeface.createFromAsset(context.getAssets(), "fonts/listFont.ttf");
        editsearch.setTypeface(edtSearchFont);
        editsearch.addTextChangedListener(new TextWatcher() {

            @Override
            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub

            }


            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1,
                                          int arg2, int arg3) {
                // TODO Auto-generated method stub
            }


            @Override
            public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {

                String text = editsearch.getText().toString().toLowerCase(Locale.getDefault());
                adapter.filter(text);
            }
        });

        clearText = (ImageView) findViewById(R.id.clearTextImage);

        clearText.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                editsearch.setText("");

            }
        });

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //getMenuInflater().inflate(R.menu.activity_main, menu);
        menu.add(0, 1, 1, "About");
        menu.add(0, 2, 2, "Exit");

        return true;

    }


    //@SuppressWarnings("deprecation")
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub

        switch (item.getItemId()) {

            case 1: {

                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("About")
                        .setMessage("\n" + "© Copyright" + "\n" + "Hossein Tahmasebi , 2014" + "\n")
                        .setCancelable(false)
                        .setIcon(R.drawable.logo)
                        .setNegativeButton("Ok", new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog, int id) {
                                dialog.cancel();
                            }
                        });
                AlertDialog alert = builder.create();
                alert.show();

                break;

            }
            case 2: {

                this.finish();

            }

        }

        return super.onOptionsItemSelected(item);
    };

}

 

 

 

کلاس  ListViewStruct 

 public class ListViewStruct {

    private int    index;
    private String word;
    private String translate;

    public ListViewStruct(String country, int index) {

        this.word = country;
        this.index = index;

    }
    public int getIndex() {
        return this.index;
    }
    public String getWord() {
        return this.word;
    }
    public String getPopulation() {
        return this.translate;
    }
}

 کلاس ListViewAdapter 

 public class ListViewAdapter extends BaseAdapter {

    // Declare Variables
    Context                           mContext;
    String[]                          population;
    LayoutInflater                    inflater;
    private List<ListViewStruct>      StructList = null;
    private ArrayList<ListViewStruct> arraylist;
    public int                        index;


    public ListViewAdapter(Context context, List<ListViewStruct> worldpopulationlist) {
        mContext = context;
        this.StructList = worldpopulationlist;
        inflater = LayoutInflater.from(mContext);
        this.arraylist = new ArrayList<ListViewStruct>();
        this.arraylist.addAll(worldpopulationlist);
    }


    public class ViewHolder {

        TextView word;
    }

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

    @Override
    public ListViewStruct getItem(int position) {
        return StructList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

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

        final ViewHolder holder;
        if (view == null) {
            holder = new ViewHolder();
            view = inflater.inflate(R.layout.listview_item, null);
            holder.word = (TextView) view.findViewById(R.id.word);
            view.setTag(holder);
        } else {
            holder = (ViewHolder) view.getTag();
        }

        holder.word.setText(StructList.get(position).getWord());

        // Listen for ListView Item Click
        view.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                Intent intent = new Intent(mContext, SingleItemView.class);
                intent.putExtra("index", (StructList.get(position).getIndex()));
                intent.putExtra("word", (StructList.get(position).getWord()));
                mContext.startActivity(intent);
            }
        });

        return view;
    }


    // Filter Class
    public void filter(String charText) {
        charText = charText.toLowerCase(Locale.getDefault());
        StructList.clear();
        if (charText.length() == 0) {
            StructList.addAll(arraylist);
        }
        else
        {
            for (ListViewStruct wp: arraylist)
            {
                if (wp.getWord().toLowerCase(Locale.getDefault()).contains(charText))
                {
                    StructList.add(wp);
                }
            }
        }
        notifyDataSetChanged();
    }

}

 پوزش بابت طولانی بودن متن سوال و کلاس ها....

0 0
در صورت امکان به سوال من پاسخ دهید ؛ ممنون میشم دوستان.... (11 سال پیش)
+1 0
در پاسخ لینک یک sampel قرار میدم ببین و بررسیش کن (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
amir Alu  11 سال پیش
0 0

سلام.

این را دانلود کن و سورس کدها رو بررسی کن. به نتیجه میرسی

0 0
امیر جان این دیکشنری رو قبلا بررسی کردم و از تعداد زیادی رشته استفاده میکنه و روال کارش کلا با کار من متفاوته ؛ من فکر کنم توی پروژه خودم با اعمال Lazzy listview به نتیجه برسم اما هنوز نتونستم این کارو بکنم و به این منظور سوال پرسیدم دوست من .... (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .