2017-03-27 9 views
-1

データベースを作成して食べ物を埋め込むことができました!グリッドビューで表示するscreenshot of my appsqliteデータベース検索ビューで検索するときのGridview

私は食べ物を検索するとグリッドビューが更新されるように、検索ビューの動作をどのようにすることができるか知りたいと思っています!

第二の問題がある:私は

パブリッククラスFoodListがAppCompatActivity {

GridView gridView; 
static ArrayList<Food> list; 
FoodListAdapter adapter = null; 
SearchView sv; 

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

    gridView = (GridView) findViewById(R.id.gridView); 

    list = new ArrayList<>(); 
    adapter = new FoodListAdapter(this, R.layout.food_items, list); 
    gridView.setAdapter(adapter); 

    // get all data from sqlite 
    Cursor cursor = MainActivity.sqLiteHelper.getData("SELECT * FROM FOOD "); 
    list.clear(); 
    while (cursor.moveToNext()){ 
     int id = cursor.getInt(0); 
     String name = cursor.getString(1); 
     String price = cursor.getString(2); 
     byte[] image = cursor.getBlob(3); 

     list.add(new Food(name, price, image, id)); 
    } 
    adapter.notifyDataSetChanged(); 


    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 


     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Food food = list.get(position); 
      Intent i = new Intent(FoodList.this,Details.class); 
      i.putExtra("position", position); 
      Bundle bundle = new Bundle(); 

      startActivity(i); 
     } 
    }); 

} 

}

この習慣仕事iはsearchviewを追加延びGridViewの各サブ項目のためOnItemClickListener実施!サブアイテムの位置が変更され、正しい位置に戻らないためです。

フードフード= list.get(position);ここ

は、私は任意のヘルプは高く評価され、私の悪い英語のため申し訳ありませんが、あなたたちは私が探しています何を理解してほしいサブ項目が

public class Details extends AppCompatActivity { 
int position; 
Button b; 
EditText edi; 
ImageView im; 
TextView text; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_details); 

    b=(Button)findViewById(R.id.hotelbu); 
    edi=(EditText)findViewById(R.id.hoteled); 
    im = (ImageView)findViewById(R.id.hotelim); 
    text=(TextView)findViewById(R.id.hoteltx); 

    if(getIntent().getExtras() != null) { 
     position = getIntent().getExtras().getInt("position", 0); 
    } 

    switch(position){ 

     case 9999: 



      break; 
     default: 

      text.setText(FoodList.list.get(position).getName()); 
      edi.setText(FoodList.list.get(position).getPrice()); 
      break; 
    } 
} 
} 

をクリックされたとき、私は始めています活動が

+0

を作成するためのXMLコードでこのリンク

にAutoCompleteTextViewの例を見ることができます。 – Selvin

答えて

0

ありがとうです単純なEditTextの代わりにAutoCompleteTextViewを使用する必要があります。 AutoCompleteTextViewは、編集可能なテキストビューで、ユーザーが入力中にドロップダウンリストに自動的に候補のリストを表示します。ここからユーザーは、編集ボックスの内容を置き換えるアイテムを選択できます。

auto_complete_textview = (AutoCompleteTextView)findViewById(R.id.auto_complete_textview); 

      auto_complete_textview.addTextChangedListener(new TextWatcher() { 
       @Override 
       public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

       } 

       @Override 
       public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
        adapter.getFilter().filter(charSequence.toString()); 
       } 

       @Override 
       public void afterTextChanged(Editable editable) { 

       } 
      }); 

は今、BaseAdapterを拡張し、フィルター可能なインタフェースを実装するアダプタクラスを作成フィルター可能なインタフェースのBaseAdapterとされるgetFilter()メソッドのすべてのメソッドをオーバーライドして、あなたが望むすべてのものを行います。

あなたは[http://www.javatpoint.com/android-autocompletetextview-example]

これは明らかにあなたは、このための主キーを使用する必要がありますAutoCompleteTextView

<AutoCompleteTextView 
    android:id="@+id/auto_complete_text_view" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:hint="Search"/> 
+0

ありがとう、いくつかの変更を加えれば完璧に動作します –