android - 显示更多文本的更好方法是什么?
问题描述
我正在为一个主题开发一个课堂笔记应用程序。在一项活动中,课程名称使用回收站视图显示:
在另一个活动中,课程内容显示如下:
为此,我正在使用意图 putExtra - setText 方法。考虑到应用程序内存,有没有更好的方法可以流畅地显示更多文本,特别是如果每节课有 50 多篇文章和 3-4 页文本内容。
ArticalDataModel.java
private String artical_title,artical_desc;
public ArticalDataModel(String artical_title, String artical_desc) {
this.artical_title = artical_title;
this.artical_desc = artical_desc;
}
public String getArtical_title() {
return artical_title;
}
public void setArtical_title(String artical_title) {
this.artical_title = artical_title;
}
public String getArtical_desc() {
return artical_desc;
}
public void setArtical_desc(String artical_desc) {
this.artical_desc = artical_desc;
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
List<ArticalDataModel> articalDataModels;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
articalDataModels = new ArrayList<>();
articalDataModels.add(new ArticalDataModel("article one ",getResources().getString(R.string.a1)));
articalDataModels.add(new ArticalDataModel("article two ",getResources().getString(R.string.a2)));
articalDataModels.add(new ArticalDataModel("article three ",getResources().getString(R.string.a3)));
articalDataModels.add(new ArticalDataModel("article four ",getResources().getString(R.string.a4)));
articalDataModels.add(new ArticalDataModel("article five ",getResources().getString(R.string.a5)));
articalDataModels.add(new ArticalDataModel("article six ",getResources().getString(R.string.a6)));
articalDataModels.add(new ArticalDataModel("article seven ",getResources().getString(R.string.a7)));
RecyclerView myrv = findViewById(R.id.recyclerviewid);
MyRvAdapter myAdapter = new MyRvAdapter(this,articalDataModels);
myrv.setLayoutManager(new LinearLayoutManager(this));
myrv.setAdapter(myAdapter);
}
}
MyRvAdapter.java
public class MyRvAdapter extends RecyclerView.Adapter<MyRvAdapter.MyViewHolder> {
private Context mContext;
private List<ArticalDataModel> mData;
public MyRvAdapter(Context mContext, List<ArticalDataModel> mData) {
this.mContext = mContext;
this.mData = mData; }
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
View view;
LayoutInflater mInflater = LayoutInflater.from(mContext);
view = mInflater.inflate(R.layout.artical_title_card, parent,false);
return new MyViewHolder(view); }
@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int position) {
myViewHolder.tv_art_title.setText(mData.get(position).getArtical_title());
myViewHolder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(mContext,DisplayArticle.class);
intent.putExtra("Atitle",mData.get(position).getArtical_title());
intent.putExtra("Atext",mData.get(position).getArtical_desc());
mContext.startActivity(intent); }}); }
@Override
public int getItemCount() {
return mData.size(); }
public static class MyViewHolder extends RecyclerView.ViewHolder{
TextView tv_art_title;
CardView cardView;
public MyViewHolder(@NonNull View itemView){
super(itemView);
tv_art_title = itemView.findViewById(R.id.article_title_id);
cardView = itemView.findViewById(R.id.cardviewid);
}}
@Override
public void onDetachedFromRecyclerView(@NonNull RecyclerView recyclerView) {
recyclerView.setAdapter(null);
recyclerView.setLayoutManager(null);
recyclerView.setOnClickListener(null);
super.onDetachedFromRecyclerView(recyclerView);
}}
DisplayArticle.java
public class DisplayArticle extends AppCompatActivity {
private TextView tv_title,tv_desc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_article);
tv_title = findViewById(R.id.pt);
tv_desc = findViewById(R.id.pd);
Intent intent= getIntent();
String art_title = intent.getExtras().getString("Atitle");
String art_desc = intent.getExtras().getString("Atext");
tv_title.setText(art_title);
tv_desc.setText(art_desc); }
@Override
protected void onDestroy() {
tv_desc.setText(null);
tv_title.setText(null);
super.onDestroy(); }}
当我测试 moto onepower(pie) 时,只有 7 篇文章占用 80-90 mb (android profiler) 的演示应用程序有什么问题还是正常。任何人都可以提出更好的方法,我是 android 开发的新手。
解决方案
使用片段而不是开始一个新活动。创建 2 个片段,一个用于保存您的课程名称,另一个用于保存您的课程内容。请记住,如果您只想显示使用片段的内容,则活动用于导航
推荐阅读
- android - 从片段的 OnResume 调用 SQliteOpenHelper 数据库 indexoutofbounds
- mule - Mulesoft 4 Dataweave for循环和EXCEL到JSON转换中的键值对
- python - 派生在 $\Theta( \sqrt{n} )$ 中运行的 while 循环
- javascript - 将鼠标移到另一个 div 中的另一个元素上时如何更改 div 样式?
- c - 在调查中提取获胜者/-s,然后打印
- javascript - 如何将 Javascript 符号设置为对象键?
- scheme - 通过 lambda 在 Scheme 中创建过程
- python - 当排名基于另一个属性装饰器时,如何计算 Django 模型中属性装饰器中的排名?
- c++ - 多核上的 MPI 计算比单核上的错误
- ios - 如何在 iOS 中禁用输入类型文件上的拍摄视频选项?