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