Searchview没有定价

时间:2017-04-10 12:08:50

标签: android searchview

我有listview,它有Sr,Itemname,Qty和price.I能够增加和减少它的价格。我有ViewView下面的View.It有两个问题。     1.当我点击它时,即使我搜索2,3或4项,我也可以搜索所需的项目名称,但只能搜索第一个项目名称的价格。我希望它必须取得该项目的价格。     2.搜索仅以第一个字母完成。如果我先写两个字母,则显示空白。     我希望通过2-3个字母进行搜索     这是我的代码 -

MainActivity.java

公共类MainActivity扩展Activity实现SearchView.OnQueryTextListener {

Button show;
ListView list_item;
private ArrayList<Integer> sr;
private ArrayList<String> item;
private ArrayList<Integer> quantity;
private ArrayList<Integer> price;


private ArrayList<Integer> sr1;
private ArrayList<String> item1;
private ArrayList<Integer> price1;
private ArrayList<Integer> data1;
SearchView searchView;
private ArrayList<String> filterlist;
public Custom custom;

int tshirtCount = 0;
int jeansCount = 0;
int shirtCount = 0;
int watchCount=0;

int tshirtPrice = 0;
int jeansPrice = 0;
int shirtPrice = 0;
int watchPrice=0;



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


    list_item = (ListView) findViewById(R.id.listdetails);
    searchView= (SearchView) findViewById(R.id.bfsearch);
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

    show=(Button)findViewById(R.id.btnview);
    sr = new ArrayList<>();
    item = new ArrayList<>();
    quantity = new ArrayList<>();
    price = new ArrayList<>();

    sr1 = new ArrayList<>();
    item1 = new ArrayList<>();
    data1= new ArrayList<>();
    price1= new ArrayList<>();

    filterlist = new ArrayList<>();
    item = filterlist;


    sr.add(1);
    sr.add(2);
    sr.add(3);
    sr.add(4);

    item.add("Tshirt");
    item.add("Jeans");
    item.add("Shirt");
    item.add("Watch");


    quantity.add(0);
    quantity.add(0);
    quantity.add(0);
    quantity.add(0);


    price.add(200);
    price.add(500);
    price.add(400);
    price.add(650);


    Custom c = new Custom(this, sr, item, quantity, price,sr1,item1,data1,price1);
    list_item.setAdapter(c);
    list_item.setTextFilterEnabled(true);
    setUpview();


    show.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(MainActivity.this,Trial.class);
            Set<Integer> s = new LinkedHashSet<>();
            s.addAll(sr);
            sr.clear();
            sr.addAll(s);

            Set<String> ss = new LinkedHashSet<>();
            ss.addAll(item);
           item.clear();
            item.addAll(ss);

           data1.clear();
            price1.clear();

            for(Integer srn: sr){
                if(srn==1){
                    data1.add(tshirtCount);
                    price1.add(tshirtPrice);
                }

                if(srn==2){
                      data1.add(jeansCount);
                    price1.add(jeansPrice);
                }

                if(srn==3){
                    data1.add(shirtCount);
                    price1.add(shirtPrice);
                }

                if(srn==4){
                    data1.add(watchCount);
                    price1.add(watchPrice);
                }
            }


            intent.putExtra("sr",sr);
            intent.putExtra("item",item);
            intent.putExtra("qty",data1);
            intent.putExtra("price",price1);
            startActivity(intent);
        }
    });

}

public void setUpview(){
    searchView.setOnQueryTextListener(this);
    searchView.setQueryHint("Search here");

}

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

@Override
public boolean onQueryTextChange(String newText) {
    list_item.setFilterText(newText);
    return true;

}

}

Custom.java

 public class Custom  extends BaseAdapter  implements Filterable {
        MainActivity a;
        public ArrayList<Integer> sr;
        public ArrayList<String> item;
        public ArrayList<Integer> quantity;
        public ArrayList<Integer> price;


        public ArrayList<Integer> sr1;
        public ArrayList<String> item1;
        public ArrayList<Integer> data1;
        public ArrayList<Integer> price1;
        public ArrayList<String> filterlist;








            public Custom(MainActivity a, ArrayList<Integer> sr,    ArrayList<String> item, ArrayList<Integer> quantity, ArrayList<Integer> price, ArrayList<Integer> sr1, ArrayList<String> item1, ArrayList<Integer> data1, ArrayList<Integer> price1) {
                this.a = a;
                this.sr = sr;
                this.item = item;
                this.quantity = quantity;
                this.price = price;
                this.sr1 = sr1;
                this.item1 = item1;
                this.data1 = data1;
                this.price1 = price1;
                }



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

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

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

            @Override
            public Filter getFilter() {
                return new Filter() {
                    @Override
                    protected FilterResults performFiltering(CharSequence constraint) {
                        FilterResults results = new FilterResults();
                        String filterstr = constraint.toString().toUpperCase();
                        ArrayList<String> data = new ArrayList<>();

                        if (filterlist == null)
                            filterlist = item;
                        int count = filterlist.size();
                        String ft = " ";
                        for (int i = 0; i < count; i++) {
                            ft = filterlist.get(i);

                            if (ft.contains(filterstr)) {

                                data.add(ft);

                            }
                        }
                        results.values = data;
                        results.count = data.size();
                        return results;
                    }

                    @Override
                    protected void publishResults(CharSequence constraint, FilterResults results) {
                        item = (ArrayList<String>) results.values;

                        notifyDataSetChanged();
                    }


                };
            }

            public class Holder{
            TextView sr1,item1,qty1,price1;
            Button pl,min;

        }


            public int getViewTypeCount() {
                return 2;
            }

            @Override
            public int getItemViewType(int position) {
                return position%2;
            }



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

             final Holder holder;

                if (convertView == null) {

                    LayoutInflater inflater = a.getLayoutInflater();
                    convertView = inflater.inflate(R.layout.customlist, parent, false);
                    holder=new Holder();

                    holder.sr1 = (TextView) convertView.findViewById(R.id.s_no);
                    holder.item1 = (TextView) convertView.findViewById(R.id.i_name);
                    holder.qty1 = (TextView) convertView.findViewById(R.id.qty);
                    holder.price1 = (TextView) convertView.findViewById(R.id.pr);
                    holder.pl = (Button) convertView.findViewById(R.id.pl);
                    holder.min = (Button) convertView.findViewById(R.id.min);
                    convertView.setTag(holder);
                } else {
                    holder = (Holder) convertView.getTag();
                }

                holder.sr1.setText(String.valueOf(sr.get(position)));
                holder.item1.setText(item.get(position));
                holder.qty1.setText(String.valueOf(quantity.get(position)));
                holder.price1.setText(String.valueOf(price.get(position)));



                holder.pl.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        switch (position) {
                            case 0:
                                if (a.tshirtCount >= 0) {
                                    a.tshirtCount++;
                                    a.tshirtPrice = a.tshirtPrice + 200;
                                    sr.get(position);
                                    item.get(position);

                                }
                                break;

                            case 1:
                                if (a.jeansCount >= 0) {
                                    a.jeansCount++;
                                    a.jeansPrice += 500;

                                    sr.get(position);
                                    item.get(position);

                                }
                                break;
                            case 2:
                                if (a.shirtCount >= 0) {
                                    a.shirtCount++;
                                    a.shirtPrice += 400;

                                    sr.get(position);
                                    item.get(position);

                                }
                                break;
                            case 3:
                                if(a.watchCount>=0){
                                    a.watchCount++;
                                    a.watchPrice +=650;

                                    sr.get(position);
                                    item.get(position);


                                }
                                break;
                        }
                        if(position==0)
                        {
                           holder.qty1.setText(String.valueOf(a.tshirtCount));
                            holder.price1.setText(String.valueOf(a.tshirtPrice));

                            sr1.add(sr.get(position));
                            item1.add(item.get(position));
                            data1.add(a.tshirtCount);
                            price1.add(a.tshirtPrice);
                        }
                        else if(position==1)
                        {
                            holder.qty1.setText(String.valueOf(a.jeansCount));
                            holder.price1.setText(String.valueOf(a.jeansPrice));

                            sr1.add(sr.get(position));
                            item1.add(item.get(position));
                            data1.add(a.jeansCount);
                            price1.add(a.jeansPrice);
                        }
                        else if(position==2)
                        {
                            holder.qty1.setText(String.valueOf(a.shirtCount));
                            holder.price1.setText(String.valueOf(a.shirtPrice));

                            sr1.add(sr.get(position));
                            item1.add(item.get(position));
                            data1.add(a.shirtCount);
                            price1.add(a.shirtPrice);
                        }
                        else if(position==3)
                        {
                            holder.qty1.setText(String.valueOf(a.watchCount));
                            holder.price1.setText(String.valueOf(a.watchPrice));

                            sr1.add(sr.get(position));
                            item1.add(item.get(position));
                            data1.add(a.watchCount);
                            price1.add(a.watchPrice);

                        }


                    }
                });



                holder.min.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        switch (position) {
                            case 0:
                                if (a.tshirtCount > 0) {
                                    a.tshirtCount--;
                                    a.tshirtPrice -= 200;

                                    sr.get(position);
                                    item.get(position);

                                }
                                break;
                            case 1:
                                if (a.jeansCount > 0) {
                                    a.jeansCount--;
                                    a.jeansPrice -= 500;

                                    sr.get(position);
                                    item.get(position);

                                }
                                break;

                            case 2:
                                if (a.shirtCount > 0) {
                                    a.shirtCount--;
                                    a.shirtPrice -= 400;

                                    sr.get(position);
                                    item.get(position);

                                }
                                break;
                            case 3:
                                if(a.watchCount > 0){
                                    a.watchCount--;
                                    a.watchPrice-=650;

                                    sr.get(position);
                                    item.get(position);

                                }
                                break;
                        }

                        if(position==0)
                        {
                            holder.qty1.setText(String.valueOf(a.tshirtCount));
                            holder.price1.setText(String.valueOf(a.tshirtPrice));

                            sr1.add(sr.get(position));
                            item1.add(item.get(position));
                            data1.add(a.tshirtCount);
                            price1.add(a.tshirtPrice);
                        }
                        else if(position==1)
                        {
                            holder.qty1.setText(String.valueOf(a.jeansCount));
                            holder.price1.setText(String.valueOf(a.jeansPrice));

                            sr1.add(sr.get(position));
                            item1.add(item.get(position));
                            data1.add(a.jeansCount);
                            price1.add(a.jeansPrice);
                        }
                        else if(position==2)
                        {
                            holder.qty1.setText(String.valueOf(a.shirtCount));
                            holder.price1.setText(String.valueOf(a.shirtPrice));

                            sr1.add(sr.get(position));
                            item1.add(item.get(position));
                            data1.add(a.shirtCount);
                            price1.add(a.shirtPrice);
                        }
                        else if(position==3)
                        {
                            holder.qty1.setText(String.valueOf(a.watchCount));
                            holder.price1.setText(String.valueOf(a.watchPrice));

                            sr1.add(sr.get(position));
                            item1.add(item.get(position));
                            data1.add(a.watchCount);
                            price1.add(a.watchPrice);

                        }


                    }

                });


                return convertView;
            }

        }

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.example.abc.logic.MainActivity">


        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/item_name"
            android:orientation="horizontal"

            android:layout_toRightOf="@+id/sr_no"

            >
            <TextView
                android:layout_width="150dp"
                android:layout_height="50dp"
                android:layout_toRightOf="@+id/srno"
                android:layout_below="@+id/breakfast"
                android:text="ITEM NAME"
                android:id="@+id/itemname"
                android:gravity="center"
                android:textStyle="bold"
                android:textColor="#000"
                />

        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/qtity"
            android:orientation="horizontal"
            android:layout_toRightOf="@+id/item_name"

            >
            <TextView
                android:layout_width="40dp"
                android:layout_height="50dp"
                android:layout_toRightOf="@+id/itemname"
                android:layout_below="@+id/lunch"
                android:text="QTY"
                android:id="@+id/quantity"
                android:gravity="center"
                android:textStyle="bold"
                android:textColor="#000"
                />

        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:id="@+id/count"
            android:layout_toRightOf="@+id/qtity"

            >
            <TextView
                android:layout_width="50dp"
                android:layout_height="50dp" />

        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/rate"
            android:orientation="horizontal"
            android:layout_toRightOf="@+id/count"

            >
            <TextView
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:layout_toRightOf="@+id/quantity"
                android:layout_below="@+id/snacks"
                android:text="PRICE"
                android:id="@+id/price"
                android:gravity="center"
                android:textStyle="bold"
                android:textColor="#000"
                />

        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/sr_no"
            android:orientation="horizontal"

            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true">
            <TextView
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:layout_below="@+id/breakfast"
                android:layout_margin="2dp"
                android:layout_marginTop="10dp"
                android:text="SR.NO"
                android:gravity="center"
                android:textStyle="bold"
                android:textColor="#000"
                android:id="@+id/srno"
                />

        </LinearLayout>

        <ListView
            android:layout_width="match_parent"
            android:layout_height="150dp"
            android:id="@+id/listdetails"
            android:scrollbars="vertical"
            android:layout_below="@+id/item_name"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true">


        </ListView>



        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/btnview"
            android:text="View"
            android:layout_below="@+id/listdetails"
            android:clickable="true">

        </Button>



        <android.support.v7.widget.SearchView
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:id="@+id/bfsearch"

            android:layout_marginLeft="3dp"
            android:queryHint="Search"
          android:layout_below="@+id/btnview"
            android:layout_gravity="center"
            />

    </RelativeLayout>

customlist.xml

 <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent">


        <TextView
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:id="@+id/s_no"
            android:layout_marginTop="5dp"
            android:gravity="center"
            android:textColor="#000"
            android:textStyle="bold"
            />
        <TextView
            android:layout_width="150dp"
            android:layout_height="50dp"
            android:gravity="center"
            android:textColor="#000"
            android:textStyle="bold"
            android:id="@+id/i_name"
            android:layout_marginTop="5dp"
            android:layout_toRightOf="@+id/s_no"
            />

        <Button
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:id="@+id/pl"
            android:layout_marginTop="5dp"
            android:layout_toRightOf="@+id/qty"
            android:background="@drawable/plus1"
            />
        <TextView
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:id="@+id/qty"
            android:layout_toRightOf="@id/i_name"
            android:gravity="center"
            android:textColor="#000"
            android:textStyle="bold"
            android:layout_marginTop="5dp"
            />

        <Button
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:id="@+id/min"
            android:layout_marginTop="3dp"
            android:layout_below="@id/pl"
            android:layout_toRightOf="@id/qty"
            android:background="@drawable/minus1"
            />

        <TextView
            android:layout_width="60dp"
            android:layout_height="50dp"
            android:id="@+id/pr"
            android:gravity="center"
            android:textColor="#000"
            android:textStyle="bold"
            android:layout_marginLeft="10dp"
            android:layout_alignBottom="@+id/min"
            android:layout_toRightOf="@+id/pl"
            android:layout_toEndOf="@+id/pl" />




    </RelativeLayout>

0 个答案:

没有答案