2017-03-27 2 views
0

私は、いくつかの製品に関する情報を表示するアプリを作ったので、私は主要な活動の中にarraylistのブランドを入れてこれを達成し、ユーザーが特定のモデルを選ぶことができるブランドを選択した後、グローバルxmlファイル、および詳細となるStringsとintsを持つ各モデルのクラスは、今では、潜在的に何百もあり、1000を超えるモデルもありますが、これを達成するための簡単な方法はありますか?すべてのデータを1つのクラスに入れてから、それを取り出すのが好きですか?またはそれは物事をより厄介にするでしょうか?ここで達成しようとしているものを簡単に入手する方法はありますか?

私は初心者だと皆さんに知らせるためです。

主な活動は、ブランドのリストを示しています:テスト目的のために

は、私はちょうどリストとの2つのブランドを設定します。

package com.example.ofir.myapplication; 

import android.content.Intent; 
import android.support.v4.content.ContextCompat; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ListView; 


import com.example.ofir.myapplication.lists.bmwList; 
import com.example.ofir.myapplication.lists.ktmList; 

import java.util.ArrayList; 



public class MainActivity extends AppCompatActivity { 


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



     final ArrayList<Brands> brands = new ArrayList<>(); 
     brands.add(new Brands("KTM", ContextCompat.getColor(this, R.color.colorOrange))); 
     brands.add(new Brands("BMW", ContextCompat.getColor(this, R.color.colorPrimary))); 
     brands.add(new Brands("Suzuki", ContextCompat.getColor(this, R.color.colorPrimary))); 



     BrandAdapter itemsAdapter = new BrandAdapter(this, brands); 

     ListView listView = (ListView) findViewById(R.id.brandlist); 

     listView.setAdapter(itemsAdapter); 

     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 


      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       if(position == 0) { 

        Intent intent = new Intent(MainActivity.this, ktmList.class); 
        startActivity(intent); 
       }else if (position == 1) { 

        Intent intent2 = new Intent(MainActivity.this, bmwList.class); 
        startActivity(intent2); 
       } 
      } 
     }); 



    } 



} 

各ブランドのモデルのリストを開きます

は、これは私のコードです。

package com.example.ofir.myapplication.lists; 

import com.example.ofir.myapplication.R; 
import com.example.ofir.myapplication.models.dukeSmall; 
import com.example.ofir.myapplication.models.smc; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

import java.util.ArrayList; 

import static android.media.CamcorderProfile.get; 

public class ktmList extends AppCompatActivity { 

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


     final ArrayList<String> ktmlist = new ArrayList<String>(); 
     ktmlist.add("Duke 125"); 
     ktmlist.add("Duke 200"); 
     ktmlist.add("Duke 390"); 
     ktmlist.add("Duke 690"); 
     ktmlist.add("RC 125"); 
     ktmlist.add("RC 200"); 
     ktmlist.add("RC 390"); 
     ktmlist.add("RC8"); 
     ktmlist.add("SMC-R 690"); 
     ktmlist.add("SMR 990"); 
     ktmlist.add("SuperDuke 990"); 
     ktmlist.add("SuperDuke 1290"); 


     final ArrayAdapter<String> itemsAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, ktmlist); 

     ListView listView = (ListView) findViewById(R.id.models_list); 

     listView.setAdapter(itemsAdapter); 

     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 


      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

       if(position == 0) { 
        Intent intent = new Intent(ktmList.this, dukeSmall.class); 
        startActivity(intent); 
       }else if (position == 8){ 
        Intent intent = new Intent(ktmList.this, smc.class); 
        startActivity(intent); 
       } 

      } 
     }); 



      } 
     } 

とは、私はその仕様で、各モデルのモデルクラスを持って、モデルの例は次のとおりです。

package com.example.ofir.myapplication.models; 


import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.ImageView; 

import android.widget.TextView; 


import com.example.ofir.myapplication.R; 





/** 
* Created by Ofir on 23-Mar-17. 
*/ 


public class smc extends AppCompatActivity{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.info_page); 

     int cc = 690; 
     int weight = 150; 
     int hp = 67; 
     int topspeed = 180; 


     ImageView logo = (ImageView) findViewById(R.id.logo_image); 
     logo.setImageResource(R.drawable.smc); 


     TextView Displacement = (TextView) findViewById(R.id.displacement_text); 
     Displacement.setText(cc + "cc"); 

     TextView HP = (TextView) findViewById(R.id.hp_text); 
     HP.setText(""+hp); 

     TextView Weight = (TextView) findViewById(R.id.weight_text); 
     Weight.setText(""+weight); 

     TextView topSpeed = (TextView) findViewById(R.id.top_speed_text); 
     topSpeed.setText(topspeed + " km/h"); 


    } 

} 

は今、私の質問があり、それを達成する簡単な方法はありますか?それぞれのモデルと各モデルのクラスを設定する代わりに、インテントのトン数を設定するのではなく、

+1

データベースを利用することができます。 –

+0

それは同じではありませんか?単にそのプロパティを書くのではなく、データベースからそれらを引き出すのですか? – Skity

+0

アプリの機能は異なって見えないかもしれませんが、コードのメンテナンスを容易にするのに役立ちます。 –

答えて

1

したがって、すべてのアイテムについて共通の要素(変位、重量、トップスピードなど)が得られます。 Bundleクラスを使用することができます。

本当に簡単です。

  1. バンドルのバンドルに続いて

    Bundle bundle = new Bundle();

  2. のインスタンスを作成し、ちょうどあなたが好きなアイテムを置きます。たとえば、あなたは、ArrayListのを入れたい場合は

bundle.putIntArray(arrayKey, int[]);

注:次のアクティビティは、あなたがバンドルにたいアイテムを認識できるように、キーがあります。

  1. 当然、あなたの意図にバンドルを入れてください。あなたの次の活動

    intent.putExtra(bundleKey, bundle);

  2. 、その後、意図、あなたのバンドルを取得します。

    Bundle bundle = getIntent().getExtras().getBundle(bundleKey);

  3. バンドルからあなたのArrayListを抽出します。

    int yourArrayList[] = bundle.getIntArray(arrayKey);

そして、あなたはすべて完了です。

+0

あなたの答えをありがとう、私はFirebaseを使用して将来のメンテナンスを容易にするために切り替えたが、非常に役に立ちました。 – Skity

0

すべてのデータを1つのクラスに入れて、それをそのままプルするのが好きですか?

Bike.javaは、1つの自転車タイプ(速度、画像、CC、重量)に関するすべての情報を保持するファイルを作成することをお勧めします。

次に、Bike smc = new Bike(690, 150, 67, 180, R.drawable.smc)とすることができます。

インテントを使用して1つだけBikeDetailActivity.javaにロードすることができます。

を作成して、アイテムをクリックしたときにインテントを作成し、そこに表示するために必要な情報を渡すようにします。

また、データを取得するにはgetIntentを使用することも学ぶ必要があります。

注:データベースは、自転車の情報を編集して保存する場合に便利です。

関連する問題