Advertisement
uopspop

Untitled

Sep 26th, 2016
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.30 KB | None | 0 0
  1. package com.example.sam.recycleviewprac;
  2.  
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.support.v7.app.AppCompatActivity;
  6. import android.os.Bundle;
  7. import android.support.v7.widget.GridLayoutManager;
  8. import android.support.v7.widget.LinearLayoutManager;
  9. import android.support.v7.widget.RecyclerView;
  10. import android.support.v7.widget.StaggeredGridLayoutManager;
  11. import android.view.LayoutInflater;
  12. import android.view.View;
  13. import android.view.ViewGroup;
  14. import android.widget.ImageView;
  15. import android.widget.TextView;
  16. import android.widget.Toast;
  17.  
  18. import java.util.ArrayList;
  19. import java.util.List;
  20.  
  21. public class MainActivity extends AppCompatActivity {
  22.  
  23. @Override
  24. protected void onCreate(Bundle savedInstanceState) {
  25. super.onCreate(savedInstanceState);
  26. setContentView(R.layout.activity_main);
  27.  
  28. // get data
  29. List<Spot> myListSpot = getSpots();
  30. // get the container view
  31. RecyclerView myRvSpot = (RecyclerView)findViewById(R.id.rv_ID);
  32. if (myRvSpot != null){
  33. // set layoutManager to setup overall designing strucuture;
  34. // 三選一:
  35. myRvSpot.setLayoutManager(new LinearLayoutManager(this));
  36. //myRvSpot.setLayoutManager(new GridLayoutManager(this,1));
  37. //myRvSpot.setLayoutManager(new StaggeredGridLayoutManager(3,1));
  38. // set Adapter for the container view - put context(載入view用) and data into it
  39. myRvSpot.setAdapter(new SpotAdapter(this, myListSpot));
  40.  
  41. }
  42.  
  43. }
  44. //
  45. // RecyclerView.Adapter< VH extends android.support.v7.widget.RecyclerView.ViewHolder>
  46. // generic matters here: <SpotAdapter.ViewHolder>
  47. public class SpotAdapter extends RecyclerView.Adapter<SpotAdapter.MyViewHolder> {
  48. private Context context;
  49. private List<Spot> myListSpot;
  50. private LayoutInflater myLayoutInflater;
  51.  
  52. public SpotAdapter(Context context, List<Spot> myListSpot) {
  53. this.context = context;
  54. this.myListSpot = myListSpot;
  55. myLayoutInflater = LayoutInflater.from(context);
  56. }
  57.  
  58. @Override
  59. public int getItemCount() {
  60. return this.myListSpot.size();
  61. }
  62.  
  63. // create a ViewHoder class that is child of RecyclerView.ViewHolder
  64. // 因為繼承RecyclerView.Adapter<E extends RecyclerView.ViewHolder>其中有個方法改寫時需要用到
  65. public class MyViewHolder extends RecyclerView.ViewHolder{
  66. ImageView ivImage;
  67. TextView tvHotel;
  68. TextView tvPrice;
  69. // 把拿到的到個view的資料一個個存好成實體變數
  70. public MyViewHolder(View itemView) {
  71. super(itemView); // 必須使用這個父建構式,因為RecyclerView.ViewHolder沒有空參數的建構式 - 用父類別的實體變數來指向這個View物件,第90行會用到
  72. this.ivImage = (ImageView) itemView.findViewById(R.id.ivImage);
  73. this.tvHotel = (TextView) itemView.findViewById(R.id.tvHotel);
  74. this.tvPrice = (TextView) itemView.findViewById(R.id.tvPrice);
  75. }
  76. }
  77.  
  78. @Override
  79. public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  80. // 將customed layout載入,並裝在ViewHolder中回傳給RecyclerView使用
  81. View itemView = this.myLayoutInflater.inflate(R.layout.recycleview_item, parent, false);
  82. return new MyViewHolder(itemView); //可將ViewHolder
  83. }
  84.  
  85. @Override
  86. // onBindViewHolder(VH holder, int dposition): VH
  87. // ( view , data )
  88. public void onBindViewHolder(MyViewHolder viewHolder, final int position) {
  89. Spot mySpot = myListSpot.get(position);
  90. viewHolder.ivImage.setImageResource(mySpot.getimgId());
  91. viewHolder.tvHotel.setText(mySpot.getHotelName());
  92. viewHolder.tvPrice.setText(Integer.toString(mySpot.getPrice()) + "$");
  93.  
  94. viewHolder.itemView.setOnClickListener(new View.OnClickListener(){
  95. @Override
  96. public void onClick(View view) {
  97. Spot Spot = myListSpot.get(position);
  98. //showImgToast(mySpot2.getimgId());
  99. Intent intent = new Intent(MainActivity.this, ResultImg.class);
  100. Bundle bundle = new Bundle();
  101. bundle.putSerializable("Spot", Spot);
  102. intent.putExtras(bundle);
  103. startActivity(intent);
  104. }
  105. });
  106. }
  107. }// end
  108.  
  109.  
  110. private void showImgToast(int imgId){
  111. ImageView imageView = new ImageView(getApplicationContext());
  112. imageView.setImageResource(imgId);
  113. Toast toast = new Toast(getApplicationContext());
  114. toast.setView(imageView);
  115. toast.setDuration(Toast.LENGTH_SHORT);
  116. toast.show();
  117. }
  118.  
  119. private List<Spot> getSpots() {
  120. List<Spot> spots = new ArrayList<>();
  121. spots.add(new Spot(R.drawable.hotel1,"福華飯店",300));
  122. spots.add(new Spot(R.drawable.hotel2,"青年旅館",100));
  123. spots.add(new Spot(R.drawable.hotel3,"我家三樓房間",50));
  124. return spots;
  125. }
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement