Android Studio簡單還原微信ui 上一期完成內容(前情提要) 上次我們簡單地實現了微信的幾個初始界面,並且在聯繫人頁面通過recycleview添加了許多的view 目標 建立在上次的基礎上,我們來擴展聯繫人界面的功能,給每一個view添加一個點擊功能,讓其可以跳轉到另一個activit ...
Android Studio簡單還原微信ui
上一期完成內容(前情提要) 上次我們簡單地實現了微信的幾個初始界面,並且在聯繫人頁面通過recycleview添加了許多的view 目標 建立在上次的基礎上,我們來擴展聯繫人界面的功能,給每一個view添加一個點擊功能,讓其可以跳轉到另一個activity,來顯示聯繫人詳細信息 技術需求 activity, xml, fragment, recyclerview 成果展示 聯繫人列表中的每一項都可以點擊,並跳轉到對應聯繫人的詳細頁
倉庫地址 https://github.com/SmileEX/wecaht.git
實現過程 在 onBindViewHolder 中添加 onClick 函數
首先我們要在之前編寫的 RecycleViewAdapter 中添加額外的代碼邏輯,讓我們的每一個item具有點擊功能,我們在 onBindViewHolder 中添加onClick函數。
1 @Override 2 public void onBindViewHolder(@NonNull Myviewholder holder, int position) { 3 holder.tvimg.setImageResource(mSrc.get(position)); 4 holder.tvContent.setText(mList.get(position)); 5 final int itemPosition = position; 6 holder.itemView.setOnClickListener(new View.OnClickListener() { 7 @Override 8 public void onClick(View v) { 9 String selectedItem = mList.get(itemPosition); 10 Toast.makeText(v.getContext(), "Clicked: " + selectedItem, Toast.LENGTH_SHORT).show(); 11 //跳轉 12 Intent intent = new Intent(context, FriendDetailsActivity.class); 13 //傳輸信息給跳轉的activity,以便在新的activity中顯示被點擊item對應的內容 14 intent.putExtra("name", mList.get(itemPosition)); 15 intent.putExtra("avatar", mSrc.get(itemPosition)); 16 context.startActivity(intent); 17 } 18 }); 19 }
當用戶點擊一個item時,會先在屏幕底部彈出提示 “Clicked:被點擊id”, 然後再跳轉到新的頁面,這個頁面是用來顯示聯繫人詳情的,我們通過 Intent 去傳遞信息來讓新的 activity 顯示對應的內容。
設計跳轉 activity
簡單編寫一個聯繫人詳情頁,可以顯示這個聯繫人的頭像,id,以及地區等信息,其中頭像和id可以根據item的信息而變化,地區和微信號的顯示暫時只是靜態的
編寫完後的預覽大概這個樣子
以下時xml文件內容
1 <?xml version="1.0" encoding="utf-8"?> 2 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context=".FriendDetailsActivity"> 8 9 <ImageView 10 android:id="@+id/avatar" 11 android:layout_width="100dp" 12 android:layout_height="100dp" 13 android:textSize="30sp" 14 app:layout_constraintStart_toStartOf="parent" 15 app:layout_constraintTop_toBottomOf="@+id/friendDetail" /> 16 17 <TextView 18 android:id="@+id/friendDetail" 19 android:layout_width="0dp" 20 android:layout_height="wrap_content" 21 android:text="這是聯繫人詳情頁" 22 android:textAlignment="center" 23 android:textColor="#2196F3" 24 android:textSize="30sp" 25 app:layout_constraintEnd_toEndOf="parent" 26 app:layout_constraintHorizontal_bias="0.0" 27 app:layout_constraintStart_toStartOf="parent" 28 app:layout_constraintTop_toTopOf="parent" /> 29 30 <TextView 31 android:id="@+id/information" 32 android:layout_width="wrap_content" 33 android:layout_height="wrap_content" 34 android:text="TextView" 35 android:textSize="30sp" 36 android:textStyle="bold" 37 app:layout_constraintStart_toEndOf="@+id/avatar" 38 app:layout_constraintTop_toBottomOf="@+id/friendDetail" /> 39 40 <TextView 41 android:id="@+id/wechatid" 42 android:layout_width="wrap_content" 43 android:layout_height="wrap_content" 44 android:text="微信號:xxxxx" 45 android:textSize="15sp" 46 app:layout_constraintStart_toEndOf="@+id/avatar" 47 app:layout_constraintTop_toBottomOf="@+id/information" /> 48 49 <TextView 50 android:id="@+id/area" 51 android:layout_width="wrap_content" 52 android:layout_height="wrap_content" 53 android:text="地區:中國" 54 android:textSize="15sp" 55 app:layout_constraintStart_toEndOf="@+id/avatar" 56 app:layout_constraintTop_toBottomOf="@+id/wechatid" /> 57 58 <Button 59 android:id="@+id/send" 60 android:layout_width="0dp" 61 android:layout_height="wrap_content" 62 android:text="發消息(todo)" 63 app:layout_constraintBottom_toBottomOf="parent" 64 app:layout_constraintEnd_toEndOf="parent" 65 app:layout_constraintStart_toStartOf="parent" /> 66 67 </androidx.constraintlayout.widget.ConstraintLayout>
最後再來編寫一下聯繫人詳情頁的activity的java文件
1 public class FriendDetailsActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_friend_details); 7 8 //接受Adapter傳輸過來的信息 9 Intent intent = getIntent(); 10 //第一個是聯繫人id信息 11 String string = intent.getStringExtra("name"); 12 //第二個是聯繫人頭像信息 13 int avatar = intent.getIntExtra("avatar", 0); 14 //然後再給對應的view設置對應信息的路徑 15 TextView textview = findViewById(R.id.information); 16 textview.setText(string); 17 ImageView imageview = findViewById(R.id.avatar); 18 imageview.setImageResource(avatar); 19 } 20 }
通過getIntent函數我們接受來自item傳送過來的id和頭像信息,然後再給對應view設置對應的id和圖片資源路徑
getIntExtra()函數的第二個參數是預設是,也就是如果未能從Intent獲取關於頭像路徑的信息就會預設填入,所以可以設置一個預設值來避免頭像顯示空白
倉庫鏈接
https://github.com/SmileEX/wecaht.git