这是我「安卓开发课」的第二个作业
1.任务需求
1、请在基础门户页面(作业1)的某个tab页面中添加recycleview,例如:新闻列表页面;
2、请在上一列表页面的基础上进行点击跳转设计。比如,某一tab页是新闻列表,则点击某一行能跳转到新闻详情页面。
2.项目实践思路
1.改写上次的MyAdapter.class文件:对RecyclerView进行点击触发的行动编写
2.编写对应跳转的页面和类,例如FruitActivity.class类和fruit_layout.xml
3.修改AndroidManifest.xml,对新加入的页面类进行注册,不然无法完成跳转
3.项目核心代码
3.1 MyAdapter.class:在onCreateViewHolder中添加代码,主要是setOnClickListener方法,根据点击的item进行跳转和弹窗。
如果点击的是整个item,背景颜色改变为橙,并提示你点击的是整个view,进行跳转;如果点击的是图片,背景颜色改变为蓝,并提示你点击的是图片,进行跳转;
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.fruit_item, parent, false);
ViewHolder holder = new ViewHolder(view);
holder.fruitView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int position = holder.getAdapterPosition();
Fruit fruit = mFruitList.get(position);
holder.itemView.setBackgroundColor(Color.parseColor("#f4c542"));
Toast.makeText(view.getContext(), "you clicked " + fruit.getName() + " view", Toast.LENGTH_LONG).show();
if (fruit.getName().equals("Apple")) {
Intent intent = new Intent(view.getContext(), AppleActivity.class);
view.getContext().startActivity(intent);
} else if (fruit.getName().equals("Banana")) {
Intent intent = new Intent(view.getContext(), BananaActivity.class);
view.getContext().startActivity(intent);
} else if(fruit.getName().equals("Pear")) {
Intent intent = new Intent(view.getContext(), PearActivity.class);
view.getContext().startActivity(intent);
} else if (fruit.getName().equals("Orange")) {
Intent intent = new Intent(view.getContext(), OrangeActivity.class);
view.getContext().startActivity(intent);
} else {
Toast.makeText(view.getContext(), "you clicked view invalid", Toast.LENGTH_LONG).show();
}
}
});
holder.fruitImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int position = holder.getAdapterPosition();
Fruit fruit = mFruitList.get(position);
holder.itemView.setBackgroundColor(Color.parseColor("#7EC0EE"));
Toast.makeText(view.getContext(), "I clicked " + fruit.getName() + " image", Toast.LENGTH_LONG).show();
if (fruit.getName().equals("Apple")) {
Intent intent = new Intent(view.getContext(), AppleActivity.class);
view.getContext().startActivity(intent);
} else if (fruit.getName().equals("Banana")) {
Intent intent = new Intent(view.getContext(), BananaActivity.class);
view.getContext().startActivity(intent);
} else if(fruit.getName().equals("Pear")) {
Intent intent = new Intent(view.getContext(), PearActivity.class);
view.getContext().startActivity(intent);
} else if (fruit.getName().equals("Orange")) {
Intent intent = new Intent(view.getContext(), OrangeActivity.class);
view.getContext().startActivity(intent);
} else {
Toast.makeText(view.getContext(), "you clicked image invalid", Toast.LENGTH_LONG).show();
}
}
});
return holder;
}
3.2 四个对应的UI和对应的类,以apple为例,其他可见源码 例如:apple_layout.xml 和 AppleActivity.class代码: AppleActivity.class:
package com.zhj.myapplication.fruitActivity;
import android.app.Activity;
import android.os.Bundle;
import androidx.annotation.Nullable;
import com.zhj.myapplication.R;
/**
* Description:
*/
public class AppleActivity extends Activity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.apple_layout);
}
}
apple_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="你看到了大苹果!!!"
android:textSize="40dp"
android:textColor="@color/black"
android:layout_marginTop="300dp"
android:layout_marginLeft="10dp"/>
</LinearLayout>
3.3 修改AndroidManifest.xml,主要是对前面的四个FruitActivity.class进行注册
<activity android:name=".fruitActivity.AppleActivity"
android:exported="true">
</activity>
<activity android:name=".fruitActivity.OrangeActivity"
android:exported="true">
</activity>
<activity android:name=".fruitActivity.PearActivity"
android:exported="true">
</activity>
<activity android:name=".fruitActivity.BananaActivity"
android:exported="true">
</activity>
4.效果展示
1.启动项目
2.点击发现
3.点击apple,进行跳转(不点image):会看到消息提示
4.点击返回键,返回到观察界面:看到背景进行了改变
5.再测试点击其他水果图片
6.返回,观察点击图片后的颜色
5.源码地址
Address:mini-wechat作业二——gitee