Как лучше отобразить больше текста? - PullRequest
0 голосов
/ 15 декабря 2018

Я занимаюсь разработкой приложения для заметок по предмету.В одном упражнении названия уроков отображаются с использованием представления переработчика:

Image 1

В другом упражнении содержание урока отображается так:

Image 2

Я использую намерение 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(); }}

Демонстрационное приложение, содержащее всего 7 статей, занимающих 80-90 МБ (профилировщик Android), когда я тестировал moto onepower (pie), есть какие-то проблемы или это нормально.кто-нибудь предложить лучший способ, я новичок в разработке Android.

1 Ответ

0 голосов
/ 15 декабря 2018

Используйте фрагмент вместо начала нового действия.Создайте 2 фрагмента, один из которых содержит название урока, а другой - содержание урока.Помните, что если вы хотите отобразить только что-то, используйте фрагмент, действие для навигации

...