Android 有没有更简单的方法来实现我在这里的目标?

Android 有没有更简单的方法来实现我在这里的目标?,android,Android,我制作了一个应用程序,其中显示了一些产品的信息,我通过在我的主要活动中将品牌放在arraylist中实现了这一点,然后在用户选择品牌后,他可以选择一个特定的模型,我制作了一个全局xml文件,并为每个模型创建了一个类,其中包含字符串和整数作为详细信息,现在问题是,可能有数百种甚至数千种型号,有没有更简单的方法来实现这一点?比如把所有的数据放在一个类中,然后从中提取出来?还是会让事情变得更混乱 只是想让你们知道我完全是个初学者 这是我的代码: 主要活动显示品牌列表: package com.exam

我制作了一个应用程序,其中显示了一些产品的信息,我通过在我的主要活动中将品牌放在arraylist中实现了这一点,然后在用户选择品牌后,他可以选择一个特定的模型,我制作了一个全局xml文件,并为每个模型创建了一个类,其中包含字符串和整数作为详细信息,现在问题是,可能有数百种甚至数千种型号,有没有更简单的方法来实现这一点?比如把所有的数据放在一个类中,然后从中提取出来?还是会让事情变得更混乱

只是想让你们知道我完全是个初学者

这是我的代码:

主要活动显示品牌列表:

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);
                }
            }
        });



    }



}
现在我的问题是,有没有更简单的方法来实现这一点?而不是为每个模型设置一个类,并设置大量的意图

比如把所有的数据放在一个类中,然后从中提取出来

我建议您创建一个Bike.java文件,该文件保存关于单个自行车类型的所有信息,包括速度、图像、CC和重量

然后,您可以使用Bike smc=新Bike690、150、67、180,R.drawable.smc

您可以使用Intents将其加载到一个BikeDetailActivity.java中

然后制作一个BikeAdapter.java,它是一个ArrayAdapter,这样当你点击任何项目时,你只需要做出一个意图,并传递必要的信息以显示在那里

您还需要学习使用getIntent来获取数据


注意:如果您想编辑和保存自行车信息,数据库将非常有用

所以对于所有项目,都有共同的元素位移、重量、顶速等。。您可以使用Bundle类

这真的很容易

创建一个包的实例

捆绑=新捆绑

然后在包裹上,放上你喜欢的东西。例如,如果要放置arraylist

bundle.putintarayarraykey,int[]

注意:键在那里,以便下一个活动可以识别您想要的捆绑包中的项目

当然,把你的意图捆绑起来

intent.putExtrabundleKey,bundle

在下一个活动中,获取意图,然后是捆绑包

Bundle Bundle=getIntent.getExtras.getbundlekey

从捆绑包中提取arraylist

int yourArrayList[]=bundle.getIntarrayArrayArrayKey


你们都完了

你可以利用数据库,不是也一样吗?只需从数据库中提取属性,而不用编写属性?即使应用程序的功能看起来没有什么不同,它也会帮助您简化代码的维护。所以这是正确的方法吗?每个自行车模型的类别以及每个模型的意图?您的模型类别不是模型类别。这是一个风景。。。查看POJO的意思…这些都是模型类谢谢你的回答,虽然我改用Firebase以便于将来的维护,但它还是很有帮助的。
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");


    }

}