1. 基于Android平台开发,仿头条新闻app(一)
2. 基于Android平台开发,仿头条新闻app主页抽屉实现(二)
3. 基于Android平台开发,仿头条新闻app新闻分类左右滑动实现(三)
4. 基于Android平台开发,仿头条新闻app新闻分类分类列表实现(四)
5. 基于Android平台开发,仿头条新闻app新闻详情实现(五)
相关视频教程在某站上面(🔍浩宇软件开发)
1.项目涉及到的技术点
- 使用Intent意图实现 activity页面之间跳转和传值
- 使用WebView显示详情页
相关视频教程在某站上面(🔍浩宇软件开发)
2.代码实现过程
- 在TabNewsFragment中设置列表点击事件,使用Intent跳转,具体的代码在上集中已经全部贴出来了
//recyclerView列表点击事件
mNewsListAdapter.setOnItemClickListener(new NewsListAdapter.onItemClickListener() {
@Override
public void onItemClick(NewsInfo.ResultDTO.DataDTO dataDTO, int position) {
//跳转到详情页
Intent intent = new Intent(getActivity(), NewsDetailsActivity.class);
//传递对象的时候,该类一定要实现Serializable
intent.putExtra("dataDTO", dataDTO);
startActivity(intent);
}
});
- 详情activity_news_details.xml布局
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".NewsDetailsActivity">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/purple_200"
app:title="xxx"
app:titleTextColor="@color/white"
app:navigationIcon="@drawable/baseline_arrow_back_24"/>
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</androidx.appcompat.widget.LinearLayoutCompat>
- 详情NewsDetailsActivity.java页面
public class NewsDetailsActivity extends AppCompatActivity {
private NewsInfo.ResultDTO.DataDTO dataDTO;
private Toolbar toolbar;
private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news_details);
//初始化控件
toolbar = findViewById(R.id.toolbar);
mWebView = findViewById(R.id.webView);
//获取传递的数据
dataDTO = (NewsInfo.ResultDTO.DataDTO) getIntent().getSerializableExtra("dataDTO");
//设置数据
if (null != dataDTO) {
toolbar.setTitle(dataDTO.getTitle());
mWebView.loadUrl(dataDTO.getUrl());
//添加历史记录
String dataDTOJson = new Gson().toJson(dataDTO);
UserInfo userInfo = UserInfo.getUserInfo();
if (userInfo!=null){
HistoryDbHelper.getInstance(NewsDetailsActivity.this).addHistory(userInfo.getUsername(),dataDTO.getUniquekey(),dataDTOJson);
}else {
HistoryDbHelper.getInstance(NewsDetailsActivity.this).addHistory(null,dataDTO.getUniquekey(),dataDTOJson);
}
}
//返回
toolbar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
为什么详情页用WebView来实现的?
因为调用API返回的接口数据,详情字段就是一个地址,所以用的webView来加载显示的。要不要用webView来实现,这取决于接口返回的数据格式