2

こんにちは、これが基本的な質問であることは知っていますが、どうすればよいかとても混乱しています。最初のアプリをハードコーディングしました。以下は私が試したことです:

 String Search  = SearchAuto.getText().toString();

 if(SearchAuto.getText().toString().equals("Chowchow") || 
                    SearchAuto.getText().toString().equals("Chihuahua")|| 
                    SearchAuto.getText().toString().equals("German Shephered")|| 
                    SearchAuto.getText().toString().equals("Beagle")|| 
                    SearchAuto.getText().toString().equals("Shih tzu")|| 
                    SearchAuto.getText().toString().equals("Siberian Husky")|| 
                    SearchAuto.getText().toString().equals("Pug")|| 
                    SearchAuto.getText().toString().equals("Poodle")|| 
                    SearchAuto.getText().toString().equals("Pomeranian")|| 
                    SearchAuto.getText().toString().equals("Labrador Retriever")){
                Intent myIntent = new Intent(Search.this, Dogs.class);
                myIntent.putExtra(strDog, SearchAuto.getText().toString().toLowerCase(Locale.ENGLISH));
                startActivity(myIntent);
                SearchAuto.setText("");
            }
            else if(SearchAuto.getText().toString().equals("American Shorthair") || 
                    SearchAuto.getText().toString().equals("Bengal")|| 
                    SearchAuto.getText().toString().equals("Himalayan")|| 
                    SearchAuto.getText().toString().equals("Maine Coon")|| 
                    SearchAuto.getText().toString().equals("Manx")|| 
                    SearchAuto.getText().toString().equals("Persian")|| 
                    SearchAuto.getText().toString().equals("Ragdoll")|| 
                    SearchAuto.getText().toString().equals("Russian Blue")|| 
                    SearchAuto.getText().toString().equals("Siamese")|| 
                    SearchAuto.getText().toString().equals("Sphynx")){
                Intent myIntent = new Intent(Search.this, Cats.class);
                myIntent.putExtra(strCat, SearchAuto.getText().toString().toLowerCase(Locale.ENGLISH));
                startActivity(myIntent);
                SearchAuto.setText("");
            }

しかし、データを動的にしたいので、データを保存するデータベースを作成しました。

今私の問題は、私のニーズを満たすためにクエリを作成/上記のコードを変更するにはどうすればよいですか?

これは私がこれまでに試したことです:

DBHelper.class

  public Cursor fetchbByAnimalType(String animalType, String breed) throws SQLException {

      Cursor mCursor = null;
      if (animalType == null  ||  animalType.length () == 0)  {
       mCursor = myDataBase.query(DB_TABLE, new String[] { KEY_ID, KEY_BREED },
         null, null, null, null, null);

      }
      else {
          mCursor = myDataBase.query(DB_TABLE, new String[] { KEY_ID, KEY_BREED },
         KEY_ANIMALTYPE + " like '%" + animalType + "%' AND " + KEY_BREED + breed, null, null, null, null);
      }

      if (mCursor != null) {
       mCursor.moveToFirst();
      } 

      return mCursor;
}

public Cursor fetchbBreedByName(CharSequence breed) throws SQLException {

      Cursor mCursor = null;
      if (breed == null  ||  breed.length () == 0)  {
       mCursor = myDataBase.query(DB_TABLE, new String[] { KEY_ID, KEY_ANIMALTYPE, KEY_DESCRIPTION, 
               KEY_DIET, KEY_SHELTER, KEY_HYGIENE, KEY_MEDICATION, KEY_BREED },
         null, null, null, null, null);

      }
      else {
          mCursor = myDataBase.query(DB_TABLE, new String[] { KEY_ID, KEY_ANIMALTYPE, KEY_DESCRIPTION, 
               KEY_DIET, KEY_SHELTER, KEY_HYGIENE, KEY_MEDICATION, KEY_BREED },
         KEY_BREED + " like '%" + breed + "%'", null, null, null, null);
      }

      if (mCursor != null) {
       mCursor.moveToFirst();
      } 

      return mCursor;
}

検索クラス

  public void onClick(View arg0) {
            String Search  = SearchAuto.getText().toString();

            Cursor cursor = dbHelper.fetchbBreedByName(Search);

            String strID, strBreed, strAnimalType;

            strID = cursor.getString(cursor.getColumnIndexOrThrow("_id"));
            strBreed = cursor.getString(cursor.getColumnIndexOrThrow("breed"));
            strAnimalType = cursor.getString(cursor.getColumnIndexOrThrow("animaltype"));

            Log.d("Search", "Search for " + strBreed + " ID is " + strID);


            if(Search.equals(strBreed) || strAnimaltype){ <<---- I don't know what condition I have to put in here!!!!!! I need help
                    Intent myIntent = new Intent(Search.this, Dogs.class);
                    myIntent.putExtra(strDog, Search);
                    startActivity(myIntent); 
            }

   }

問題が発生している行にインジケーターを付けました。これを実行したことはありませんが、クラッシュすることはわかっています。私が望むものを達成する方法はありますか? これには本当に助けが必要です。ありがとう。

4

2 に答える 2

1

私がすること:

2 つの ArrayLists、たとえば DogsList と CatsList を作成し、それぞれのオブジェクト (具体的には String) をそれに追加します。

String[] DogsArray = new String {"Chihuahua", "", "", ...};
ArrayList<String> DogsList = new ArrayList<String>(Arrays.asList(DogsArray));

String[] CatsArray = new String {"American Shorthair", "", "", ...};
ArrayList<String> CatsList = new ArrayList<String>(Arrays.asList(CatsArray));

それで、

if(DogsList.contains(SearchAuto.getText().toString()))
{
Intent myIntent = new Intent(Search.this, Dogs.class);
                myIntent.putExtra(strDog, SearchAuto.getText().toString().toLowerCase(Locale.ENGLISH));
                startActivity(myIntent);
}
else if(CatsList.contains(SearchAuto.getText().toString()))
{
Intent myIntent = new Intent(Search.this, Cats.class);
                myIntent.putExtra(strCat, SearchAuto.getText().toString().toLowerCase(Locale.ENGLISH));
                startActivity(myIntent);
}

このことがあなたに役立つことを願っています。

于 2013-10-05T14:31:11.253 に答える