gridview自定义适配器搜索

时间:2016-03-13 17:49:53

标签: android search gridview

我有网格视图,我想通过搜索视图搜索网格视图中的项目,

事情是我不知道如何与自定义采用者一起实现搜索视图,因为我在自定义适配器中有一个点击事件,当用户点击一个项目时,它从互联网上下载pdf文件, ,如何添加搜索视图,搜索网格视图项目,使用自定义适配器单击甚至运行,

我很新,我通常会复制并粘贴我30%新的代码。

这是我的主要活动

package com.alhaddadsoft.ammar.gridview;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.SearchView;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {



    GridView gv;
    GridView gv1;
    TextView newtext;
    Context context;
    ArrayList prgmName;
    public static String [] prgmNameList={"احمد عبده ماهر","احمد داوود","احمد صبحي منصور","لكشف الموروث اقرأ هذا أولا","الختان للذكور والاناث","الصادق النيهوم","الطريق إلى بيت المقدس","اوشو","بن فرناس","جمال البنا","جورج طرابيشي","زكريا اوزون", "سلامه موسى","سلسلة عندما نَطَقَ السراة","عبد الرزاق جبران","عبد الله القصيمي","علي الوردي","علي شريعتي","فاضل الربيعي","فرج فوده","كمال الصليبي","محمد اركون","محمد شحرور","محمد علي المحمود","محمود ابو ريه","نيازي عز الدين","هشام جعيط"
        ,"أبو الأعلى المودودي - الخلافة والملك","أسوار الصمت قراءة في الحقوق المدنية في السعودية لـ د. وليد الماجد","احمد امين - فجر الاسلام","اعمدة الحكمة السبعة . لورنس العرب","الارهابى ",
            " الاسلام واصول الحكم -- على عبد الرازق","الاسلام وجراب الحاوي . شاكر النابلسي","الاضافة النوعية القرانية.مصطفى بوهندي",
            "التأثير المسيحي في تفسير القران","التوراة اليهودية مكشوفة على حقيقتها","الخلافه الاسلاميه.محمد سعيد عشماوي","الدولة الاسلامية ،الجذور والتوحش عبدالباري عطوان","الدين واحتكار الحقيقه.واثق غازي","السادس من نوفمبر قيادة المراة للسيارة","السلطة في الاسلام لعبدالجواد حسين","السلفيون ايضا يدخلون النار.وليد طوغان","السنة بين الاصول والتاريخ ذويب رسالة دكتوراة","العقل الايماني","القران وثالوث الاستبداد.نشأت جعفر",
            "القران ولغة السريان. احمد علي الجمل","اللاهوت العربى-يوسف زيدان","المؤمن الصادق - إيريك هوفر","الملوك المحتسبون حجم صغير","امي كاملة عقل ودين","انتكاسة المسلمين الى الوثنية - سيد القمني","بالداخل . اشرف فياض","بالداخل . اشرف فياض","تاريخ نجد . بن غنام مؤرخ محمد بن عبدالوهاب","تحرير المرأه من عهد الرساله","تزييف الاسلام.انور اسحاق","جغرافية التوراة _زياد منى","حتى لا يعود جهيمان . توما ... غهامر . ستيفان لاكروا",
            "حكاية التدين السعودي . وحيد الغامدي","حواء والخطيئة","حوار حول القران وحده . محمد توفيق صدقي","رجم الزاني","طبائع الإستبداد ومصارع الإستعباد","عبد الرزاق عيد .. سدنة هياكل الوهم , نقد العقل الفقهي","عبيد بلا اغلال.تاريخ جزيرة العرب القريب","فتنة القول بتعليم البنات.عبدالله الوشمي","قدماء المصريين اول الموحدين","كارثة فلسطين . عبدالله التل","لعبة الامم","ما بعد الشيوخ ، انهيار ممالك الخليج","مابعد الصحوة.عبدالله الغذامي","مشكلة الحديث","معجزة اختيار اللفظ في القرآن",
            "مقالة العبودية الطوعية","من يجرؤ على الكلام .بول فندلي","نقد الخطاب الديني لنصر ابو زيد","نقد الخطاب السلفي ابن تيمية نموذجا.رائد السمهوري","ورثة محمد .جذور الخلاف السني الشيعي"


    };
    public static int [] prgmImages={R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon,R.drawable.folder_mac_icon
    ,R.drawable.book1,R.drawable.book2,R.drawable.book3,R.drawable.book4,R.drawable.book5,R.drawable.book6,R.drawable.book7,R.drawable.book8,R.drawable.book9,R.drawable.book10,R.drawable.book11,R.drawable.book12,R.drawable.book13,R.drawable.book14,R.drawable.book15,R.drawable.book16,R.drawable.book17,R.drawable.book18,R.drawable.book19,R.drawable.book20,R.drawable.book21_,R.drawable.book21,R.drawable.book22,R.drawable.book23,R.drawable.book24,R.drawable.book25,R.drawable.book26,R.drawable.book27,R.drawable.book28,R.drawable.book29,R.drawable.book30,R.drawable.book31,R.drawable.book32,R.drawable.book33,R.drawable.book34,R.drawable.book35,R.drawable.book36_,R.drawable.book36,R.drawable.book37,R.drawable.book38,R.drawable.book39,R.drawable.book40,R.drawable.book41,R.drawable.book42,R.drawable.book43,R.drawable.book44,R.drawable.book45,R.drawable.book46,R.drawable.book47,R.drawable.book48,R.drawable.book49,R.drawable.book50,

    };

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

        gv=(GridView) findViewById(R.id.gridView1);
        gv.setAdapter(new CustomAdapter(this, prgmNameList, prgmImages));


       
      


    }
    public void openactivity1(){
        edittext();
        //Intent i = new Intent(this, AhmedDaod.class);
       // startActivity(i);

}
public void edittext(){
  //  newtext =  (TextView)findViewById(R.id.textView5);
   // newtext.setText("hello");
}
}

这是我的CustomAdapter acteivity

package com.alhaddadsoft.ammar.gridview;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class CustomAdapter extends BaseAdapter {

    String[] result;
    Context context;


    int[] imageId;
    private static LayoutInflater inflater = null;


    String dwnload_file_path;
    String file_name;
    String imageViewD;
    String textViewD;

    GridView gridview;
    public CustomAdapter(MainActivity mainActivity, String[] prgmNameList, int[] prgmImages ) {
        // TODO Auto-generated constructor stub
        result = prgmNameList;
        context = mainActivity;
        imageId = prgmImages;
        inflater = (LayoutInflater) context.
                getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return result.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    public class Holder {
        TextView tv;
        ImageView img;
        TextView edit ;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        final Holder holder = new Holder();
        View rowView;


        rowView = inflater.inflate(R.layout.programlist, null);
        holder.tv = (TextView) rowView.findViewById(R.id.textView1);
        holder.img = (ImageView) rowView.findViewById(R.id.imageView1);

        holder.tv.setText(result[position]);
        holder.img.setImageResource(imageId[position]);
        rowView.setOnClickListener(new OnClickListener() {


            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
               // Toast.makeText(context, "You Clicked " + result[position], Toast.LENGTH_LONG).show();
                // String displayedText = ((TextView)((LinearLayout)myToast.getView()).getChildAt(0)).getText().toString();
                try {
                    if (result[position].equals("أبو الأعلى المودودي - الخلافة والملك")) {


                        new AlertDialog.Builder(context)
                                .setTitle("تحميل الكتاب")
                                .setMessage("هل تريد تحميل الكتاب?")
                                .setPositiveButton("تحميل", new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int which) {
                                        // continue with delete
                                        dwnload_file_path = "http://www.jouhinabooks.com/get_file.php?id=470";
                                        file_name = "book1.pdf";
                                        imageViewD = "book1";
                                        textViewD = result[position];
                                        Downloadmethode();

                                    }
                                })
                                .setNegativeButton("رجوع", new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int which) {
                                        // do nothing
                                    }
                                })
                                .setIcon(android.R.drawable.ic_dialog_alert)
                                .show();




                        //Intent intent= new Intent(context, AhmedDaod.class);
                       // intent.putextra("your_extra","your_class_value");
                        //context.startActivity(intent);


                        //MainActivity openactivity = new MainActivity();
                       // openactivity.openactivity1();
                        //edittext.setText("hello");
                    }

                } catch (final Exception e) {
                    Toast.makeText(context, "error  ", Toast.LENGTH_LONG).show();
                }

            }

        });

        return rowView;

    }
    public void Downloadmethode(){
        Intent d = new Intent(context, DownloadBook.class);
        d.putExtra("dwnload_file_path", dwnload_file_path);
        d.putExtra("file_name", file_name);
        d.putExtra("imageViewD",imageViewD);
        d.putExtra("textViewD",textViewD);
        context.startActivity(d);
    }
}

1 个答案:

答案 0 :(得分:0)

这就是我实现搜索功能的方式。创建两个列表,searchList和backUpList。

backUpList = loadMyData();
searchList.addAll(backUpList);

现在您有两个包含相同数据的列表。并且因为列表仅包含对对象的引用,所以没有使用额外的内存。然后将searchList提供给适配器而不是实际列表。

adapter = new CustomAdapter(searchList*/,...other inputs*/);
gridView.setAdapter(adapter);

现在,当您想要搜索数据时,清空搜索列表并搜索备份列表。如果应显示对象,则将其添加到搜索列表中。然后通知适配器并显示您的搜索结果。

searchList.clear();
searchList.addAll(backUpList);
for(CustomObject object:backUpList){
    if(meetsSearchCriteria(object)){
        searchList.add(object);
    }
}
adapter.notifyDataSetChanged();

并调整其余代码以使用searchList而不是实际数据列表。

您必须更改适配器以将对象的ArrayList作为输入而不是代码显示的表。表格在创建后不支持更改大小。