设计一个非常简单的模拟电子商城的应用
包含如下3个Activity
1.首页。里面有商品信息列表(可以用几个button列表模拟实现)
2.商品详情页面。点击一个商品信息,可以进入该商品的详情页面
3.商品评价页面。商品详情页面有个用户评价按钮,点击之后可以跳转看到用户对该商品的评价。
(参考《第一行代码》)
--------------------------------------------------------------------------------------------------
1.定义一个商品实体类Goods,作为ListView适配器的适配类型。name表示商品名字,imageId表示对应图片的资源ID.
public class Goods { private String name; private int imageId; public String getName() { return name; } public int getImageId() { return imageId; } public Goods(String name, int imageId) { super(); this.name = name; this.imageId = imageId; } }2.为 ListView 的子项指定一个我们自定义的布局,在 layout 目录下新建goods_item.xml.
在这个布局中,我们定义了一个 ImageView 用于显示水果的图片,又定义了一个TextView 用于显示水果的名称。
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/iv_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" /> <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:layout_gravity="center" android:layout_marginLeft="10dp" /> </RelativeLayout>
3.创建一个自定义的适配器,这个适配器继承自 ArrayAdapter,并将泛型指定为 Goods类。新建类 GoodsAdapter,代码如下所示:
public class GoodsAdapter extends ArrayAdapter<Goods> { private int resourceId; public GoodsAdapter(Context context, int resource, List<Goods> objects) { //重写父类构造函数,用于将上下文、ListView 子项布局的 id 和数据都传递进来 super(context, resource, objects); // TODO Auto-generated constructor stub resourceId=resource; } @Override public View getView(int position, View convertView, ViewGroup parent) { //getView()方法中有一个 convertView 参数,这个参数用于将之前加载好的布局进行缓存,以便之后可以进行重用。 Goods goods = getItem(position);// 得到当前项的Goods实例 View view; /*在 getView()方法中进行了判断,如果 convertView 为空,则使用LayoutInflater 去加载布局, * 如果不为空则直接对 convertView 进行重用。 * 这样就大大提高了ListView 的运行效率*/ if (convertView == null) view = LayoutInflater.from(getContext()).inflate(resourceId, null); else view = convertView; ImageView image = (ImageView) view.findViewById(R.id.iv_image); TextView name = (TextView) view.findViewById(R.id.tv_name); image.setImageResource(goods.getImageId()); name.setText(goods.getName()); return view; }4.MainActivity.java.
使用 setOnItemClickListener()方法来为 ListView 注册一个监听器,当用户点击了 ListView 中的任何一个子项时就会回调 onItemClick()方法, 在这个方法中可以通过 position 参数判断出用户点击的是哪一个子项,然后获取到相应的商品,并通过 Toast将商品的名字显示出来。
public class MainActivity extends Activity{ ListView lv; List<Goods> list=new ArrayList<Goods>(); Goods book,camera,gift,flower; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv=(ListView)findViewById(R.id.lv_goods); initGoods();//初始化商品 GoodsAdapter adapter=new GoodsAdapter(MainActivity.this,R.layout.goods_item,list); lv.setAdapter(adapter); lv.setOnItemClickListener(new OnItemClickListener(){ public void onItemClick(AdapterView<?> parent,View view,int position,long id){ Goods goods=list.get(position); Toast.makeText(MainActivity.this, goods.getName(), Toast.LENGTH_SHORT).show(); Intent intent = new Intent(MainActivity.this,GoodsDetailedInfo.class); intent.putExtra("Goods",goods.getName()); startActivity(intent); } }); } private void initGoods() { // TODO Auto-generated method stub book=new Goods("Book",R.drawable.book); camera=new Goods("Camera",R.drawable.camera); flower=new Goods("Flower",R.drawable.flower); gift=new Goods("Gift",R.drawable.gift); list.add(book); list.add(camera); list.add(flower); list.add(gift); } }
运行效果如图:
--------------------------------------------------------------
实现其他几个Activity
GoodsDetailedInfo.java public class GoodsDetailedInfo extends Activity{ ImageView iv_show; TextView tv_show; Button btn_comment; String name; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_goods_detailed_info); iv_show=(ImageView) findViewById(R.id.iv_showInfo); tv_show=(TextView) findViewById(R.id.tv_showInfo); btn_comment=(Button) findViewById(R.id.btn_comment); show(); } public void show(){ Intent intent=getIntent(); final String name=intent.getStringExtra("Goods"); if(name.equals("Book")){ iv_show.setImageResource(R.drawable.book); tv_show.setText(R.string.book); btn_comment.setOnClickListener(new OnClickListener(){ public void onClick(View v) { Intent intent=new Intent(GoodsDetailedInfo.this,Comment.class); intent.putExtra("name",name); startActivity(intent); } }); } else if(name.equals("Camera")){ iv_show.setImageResource(R.drawable.camera); tv_show.setText(R.string.camera); btn_comment.setOnClickListener(new OnClickListener(){ public void onClick(View v) { Intent intent=new Intent(GoodsDetailedInfo.this,Comment.class); intent.putExtra("name",name); startActivity(intent); } }); } else if(name.equals("Flower")){ iv_show.setImageResource(R.drawable.flower); tv_show.setText(R.string.flower); btn_comment.setOnClickListener(new OnClickListener(){ public void onClick(View v) { Intent intent=new Intent(GoodsDetailedInfo.this,Comment.class); intent.putExtra("name",name); startActivity(intent); } }); } else if(name.equals("Gift")){ iv_show.setImageResource(R.drawable.gift); tv_show.setText(R.string.gift); btn_comment.setOnClickListener(new OnClickListener(){ public void onClick(View v) { Intent intent=new Intent(GoodsDetailedInfo.this,Comment.class); intent.putExtra("name",name); startActivity(intent); } }); } } }
Comment.java
public class Comment extends Activity { TextView tv_showComment; ImageView iv_show; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_comment); iv_show=(ImageView) findViewById(R.id.iv_showInfo); tv_showComment=(TextView) findViewById(R.id.tv_showComment); showComment(); } public void showComment(){ Intent intent=getIntent(); String name=intent.getStringExtra("name"); if(name.equals("Book")){ iv_show.setImageResource(R.drawable.book); tv_showComment.setText(R.string.book_comment); Log.i("name",name); } if(name.equals("Camera")){ iv_show.setImageResource(R.drawable.camera); tv_showComment.setText(R.string.camera_comment); Log.i("name",name); } if(name.equals("Flower")){ iv_show.setImageResource(R.drawable.flower); tv_showComment.setText(R.string.flower_comment); Log.i("name",name); } if(name.equals("Gift")){ iv_show.setImageResource(R.drawable.gift); tv_showComment.setText(R.string.gift_comment); Log.i("name",name); } } public void back(View v){ Intent intent=new Intent(this,MainActivity.class); startActivity(intent); } }
实现效果:
转载于:https://www.cnblogs.com/carrieLee/articles/4526378.html
相关资源:android ListView及ArrayAdapter,SimpleCursorAdapter,SimpleAdapter用法示例