2016-07-29 31 views
0

嗨我需要一些幫助,根據我的關鍵字篩選我的列表。這裏是我寫的代碼,但它不工作。請幫我解決這個問題。需要幫助,根據我的搜索關鍵字篩選列表數據

import android.app.AlertDialog; 
    import android.app.ProgressDialog; 
    import android.content.DialogInterface; 
    import android.content.Intent; 
    import android.os.AsyncTask; 
    import android.os.Bundle; 
    import android.support.annotation.Nullable; 
    import android.support.v7.app.AppCompatActivity; 
    import android.text.Editable; 
    import android.text.TextWatcher; 
    import android.view.View; 
    import android.widget.AdapterView; 
    import android.widget.ArrayAdapter; 
    import android.widget.EditText; 
    import android.widget.ListAdapter; 
    import android.widget.ListView; 
    import android.widget.SimpleAdapter; 
    import android.widget.TextView; 

    import org.json.JSONArray; 
    import org.json.JSONException; 
    import org.json.JSONObject; 

    import java.util.ArrayList; 
    import java.util.Arrays; 
    import java.util.HashMap; 

    /** 
    * Created by jignesh on 28-07-2016. 
    */ 
    public class stock_product extends AppCompatActivity { 

     String type; 
     private static final String LOGIN_URL = "http://www.hetinfosolution.com/AdMobileApp/stock_full_list.php"; 
     String myJSON; 
     private static final String TAG_ID="id"; 
     private static final String TAG_NAME="name"; 
     private static final String PTAG_NAME="stock_name"; 
     private static final String TAG_RESULT="result"; 
     private static final String SIZE_METER="size_meter"; 
     private static final String SIZE_SQARE_FEET="size_square_feet"; 
     private static final String EXP_QTY="expected_qty"; 
     private static final String EXP_DATE="expected_date"; 

     JSONArray STOCK_LIST = null; 
     String [] items; 
     ArrayList<HashMap<String, String>> personList; 
     ListView list; 
     EditText editText; 
     ArrayList<String> listItems; 

     // List view 
     private ListView lv; 

     // Listview Adapter 
     ArrayAdapter<String> adapter; 

     @Override 
     protected void onCreate(@Nullable Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.display_stock); 
      Intent i = getIntent(); 
      type = i.getStringExtra("type"); 

      TextView heading = (TextView) findViewById(R.id.textView); 
      heading.setText(type); 
      list = (ListView)findViewById(R.id.StockType); 
      editText = (EditText)findViewById(R.id.txtSearch); 
      personList = new ArrayList<HashMap<String,String>>(); 

//// LoadData for fill listview data 

      LodaData(); 


/// here is method for search 

      editText.addTextChangedListener(new TextWatcher() { 
       @Override 
       public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

       } 

       @Override 
       public void onTextChanged(CharSequence s, int start, int before, int count) { 
        if(s.toString().equals("")){ 
         //Reset ListView 
         LodaData(); 
        }else{ 


/// SearchItem method created for search string and populate listview after search 


         SearchItem(s.toString()); 

        } 
       } 

       @Override 
       public void afterTextChanged(Editable s) { 

       } 
      }); 

     } 

    public void SearchItem(String item){ 

// here write code for search  

    } 

    } 

     public void LodaData() { 
      class stock extends AsyncTask<String, Void, String> { 
       ProgressDialog loading; 

       @Override 
       protected void onPreExecute() { 
        super.onPreExecute(); 
        loading = ProgressDialog.show(stock_product.this, "Please Wait...", null, true, true); 
       } 

       protected void onPostExecute(String s) { 
        super.onPostExecute(s); 
        loading.dismiss(); 
        myJSON=s; 
        listView(); 
       } 

       @Override 
       protected String doInBackground(String... params) { 
        HashMap<String, String> data = new HashMap<>(); 
        data.put("username", type); 

        RegisterUserClass ruc = new RegisterUserClass(); 
        String result = ruc.sendPostRequest(LOGIN_URL, data); 
        return result; 
       } 
      } 
      stock ulc = new stock(); 
      ulc.execute(type); 

     } 

     private void listView() { 
      try { 
    //   JSONObject jsonObject = new JSONObject(myJSON); 
       JSONObject jsonObject = new JSONObject(myJSON); 
       //  jsonObject = new JSONObject(myJSON); 
       STOCK_LIST = jsonObject.getJSONArray(TAG_RESULT); 

       for(int i=0; i<STOCK_LIST.length(); i++){ 
        JSONObject c = STOCK_LIST.getJSONObject(i); 
        String name = c.getString(PTAG_NAME); 
        String size_meter = c.getString(SIZE_METER); 
        String size_square_feet = c.getString(SIZE_SQARE_FEET); 
        String expected_date = c.getString(EXP_DATE); 
        String expected_qty = c.getString(EXP_QTY); 

        HashMap<String,String> STOCK = new HashMap<String, String>(); 
        STOCK.put(PTAG_NAME,name); 
        STOCK.put(SIZE_METER,size_meter); 
        STOCK.put(SIZE_SQARE_FEET,size_square_feet); 
        STOCK.put(EXP_DATE,expected_date); 
        STOCK.put(EXP_QTY,expected_qty); 

        personList.add(STOCK); 
       } 
       ListAdapter adapter = new SimpleAdapter(
         stock_product.this,personList,R.layout.list_stock, 
         new String[]{PTAG_NAME,SIZE_METER,SIZE_SQARE_FEET,EXP_DATE,EXP_QTY}, 
         new int[]{R.id.name,R.id.size_meter,R.id.size_square_feet,R.id.expected_date,R.id.expected_qty} 
       ); 
       list.setAdapter(adapter); 
       listItems = new ArrayList(Arrays.asList(personList)); 

       list.setOnItemClickListener(
         new AdapterView.OnItemClickListener() { 
          @Override 
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
           //String value = (String)list.getItemAtPosition((int)id); 
           TextView c = (TextView)view.findViewById(R.id.name); 
           String value = c.getText().toString(); 

           TextView sizeMeter = (TextView)view.findViewById(R.id.size_meter); 
           String valuesizeMeter = sizeMeter.getText().toString(); 

           TextView size_square_feet = (TextView)view.findViewById(R.id.size_square_feet); 
           String valuesize_square_feet = size_square_feet.getText().toString(); 

           TextView expected_qty = (TextView)view.findViewById(R.id.expected_qty); 
           String valueexpected_qtyet = expected_qty.getText().toString(); 

           TextView expected_date = (TextView)view.findViewById(R.id.expected_date); 
           String valueexpected_date = expected_date.getText().toString(); 
           double SUM; 

           if(type=="Sonatine Blinds"){ 
            SUM = Float.parseFloat(valuesizeMeter)*Float.parseFloat(valuesize_square_feet)*10.76/2; 
           }else if(type=="Vertical Blinds"){ 
            SUM = Float.parseFloat(valuesizeMeter); 
           }else{ 
            SUM= Float.parseFloat(valuesizeMeter)*Float.parseFloat(valuesize_square_feet)*10.76; 
           } 
           AlertDialog.Builder a_builder = new AlertDialog.Builder(stock_product.this); 
           a_builder.setMessage("PRODUCT NAME : "+value+"\n"+ 
                "QUANTITY IN SQF : "+SUM+"\n"+ 
                "QUANTITY IN METER : "+valuesizeMeter+"\n"+ 
                "EXPECTED DATE OF ARRIVAL : "+valueexpected_date+"\n"+ 
                "QUANTITY IN TRANSIT (In Mtr): "+valueexpected_qtyet) 
           .setCancelable(true) 
           .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
            @Override 
            public void onClick(DialogInterface dialog, int which) { 
             dialog.cancel(); 
            } 
           }); 
          AlertDialog alert = a_builder.create(); 
          alert.setTitle("PRODUCT STOCK DETAIL "); 
          alert.show(); 
          } 
         } 
       ); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

     } 

    } 
+1

請不要將其稱爲「Android腳本」。這不是一個腳本。你的問題已經在這裏回答 - http://stackoverflow.com/questions/14663725/list-view-filter-android – Divers

+0

'if(type ==「Sonatine Blinds」){' - > http://stackoverflow.com/問題/ 513832 /怎麼辦 - 我 - 比較 - 串式的Java –

回答

0

潛水員是正確的。 在editdetext監聽器的OnTextChanged方法中,使用stock_product.this.getFilter()。filter(s)