• 冲刺二十一天


    实现书籍显示

    整体书籍展示

     BookListActivity

    package com.lh.std_everything.ui.home.hometype.studyshare.share;
    
    import androidx.annotation.NonNull;
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.recyclerview.widget.LinearLayoutManager;
    import androidx.recyclerview.widget.RecyclerView;
    import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
    
    import android.content.Intent;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.util.Log;
    import android.view.View;
    import android.widget.ImageView;
    import android.widget.Toast;
    
    import com.lh.std_everything.HttpUtil.HttpUtil;
    import com.lh.std_everything.R;
    import com.lh.std_everything.ui.home.hometype.news.adapter.NewsAdapter;
    
    import org.json.JSONArray;
    import org.json.JSONException;
    
    public class BookListActivity extends AppCompatActivity {
        public ImageView upload,search;
        public RecyclerView rc_book;
        public BooksAdapter adapter;
        private Handler handler;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_book_list);
            init();
            upload.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent=new Intent(BookListActivity.this,bookuploadActivity.class);
                    startActivity(intent);
                }
            });
            rc_book.setLayoutManager(new LinearLayoutManager(BookListActivity.this));
            adapter = new BooksAdapter();
            getThreadData();
            handler = new Handler(new Handler.Callback() {
                @Override
                public boolean handleMessage(@NonNull Message msg) {     //线程回调更新数据
                    if (msg.what == 200) {
                        adapter.setJsonArray((JSONArray) msg.obj);
                        rc_book.setAdapter(adapter);
                    }
                    return true;
                }
            });
    
        }
        public void init()
        {
            upload=findViewById(R.id.uploadimg);
            search=findViewById(R.id.searchimg);
            rc_book=findViewById(R.id.bookrv);
        }
    
        private void getThreadData() {                     //线程封装网络请求
            new Thread(new Runnable() {
                @Override
                public void run() {
                    String reqdata = "";
                    String address="http://116.62.178.231:8080/BaiXiaoSheng/getallbooks";
                    try {
                        final JSONArray json = new JSONArray(String.valueOf(HttpUtil.sendPost(address, reqdata)));
                        Log.d("tag", json.toString());
                        Message msg = new Message();
                        msg.what = 200;
                        msg.obj = json;
                        handler.sendMessage(msg);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    }
    View Code

    BooksAdapter

    package com.lh.std_everything.ui.home.hometype.studyshare.share;
    
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import androidx.annotation.NonNull;
    import androidx.recyclerview.widget.RecyclerView;
    
    import com.bumptech.glide.Glide;
    import com.bumptech.glide.request.RequestOptions;
    import com.lh.std_everything.R;
    import com.lh.std_everything.ui.home.hometype.news.adapter.NewsAdapter;
    
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    public class BooksAdapter extends RecyclerView.Adapter<BooksAdapter.MyViewHolder>{
        JSONArray jsonArray=new JSONArray();
        private View itemview;
        public String arr[]={"begin","one","two","three","four","five","six","seven","eight","nine","ten","others"};
        public void setJsonArray(JSONArray jsonArray) {
            this.jsonArray = jsonArray;
        }
    
        @NonNull
        @Override
        public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            LayoutInflater layoutInflater=LayoutInflater.from(parent.getContext());
            itemview=layoutInflater.inflate(R.layout.cell_book,parent,false);
            return new BooksAdapter.MyViewHolder(itemview);
        }
    
        @Override
        public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
            JSONObject bean=null;
            try {
                bean= jsonArray.getJSONObject(position);
                holder.textViewName.setText(bean.getString("bookname"));
                holder.textViewAuthor.setText(bean.getString("bookauthor"));
                holder.textViewPublish.setText(bean.getString("bookpublish"));
                String []urls=bean.getString("head").split("\$");
                RequestOptions options = new RequestOptions()
                        .error(R.drawable.error)
                        .placeholder(R.drawable.loading);
                if(urls.length!=0) {
                    for(int i=0;i<urls.length;i++)
                    {
                        if(!urls[i].equals("null"))
                        {
                            Log.i("url",urls[i]);
                            Glide.with(itemview)
                                    .load(urls[i])
                                    .apply(options)
                                    .into(holder.bookphoto);
                            break;
                        }
                    }
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Bundle bundle=new Bundle();
                    Intent intent=new Intent(itemview.getContext(), ShowBookActivity.class);
                    try {
                        bundle.putString("bookname", jsonArray.getJSONObject(position).getString("bookname"));
                        bundle.putString("bookauthor", jsonArray.getJSONObject(position).getString("bookauthor"));
                        bundle.putString("bookpublish", jsonArray.getJSONObject(position).getString("bookpublish"));
                        bundle.putString("username", jsonArray.getJSONObject(position).getString("username"));
                        bundle.putString("head", jsonArray.getJSONObject(position).getString("head"));
                        Log.i("bundle中的username:", ""+jsonArray.getJSONObject(position).getString("username"));
                        for(int i=1;i<=11;i++)
                        {
                            if(jsonArray.getJSONObject(position).has(arr[i]))
                            {
                                bundle.putString(arr[i], jsonArray.getJSONObject(position).getString(arr[i]));
                            }
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                    intent.putExtras(bundle);
                    itemview.getContext().startActivity(intent);
                }
            });
        }
    
        @Override
        public int getItemCount() {
            return jsonArray.length();
        }
    
    
        static class MyViewHolder extends RecyclerView.ViewHolder{
            ImageView bookphoto;
            TextView textViewName,textViewAuthor,textViewPublish;
            public MyViewHolder(@NonNull View itemView) {
                super(itemView);
                bookphoto=itemView.findViewById(R.id.bookimg);
                textViewName=itemView.findViewById(R.id.booktitle);
                textViewAuthor=itemView.findViewById(R.id.bookauthor);
                textViewPublish= itemView.findViewById(R.id.bookpublish);
            }
        }
    }
    View Code

    对应书籍章节展示

    showbookactivity

    package com.lh.std_everything.ui.home.hometype.studyshare.share;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.content.Intent;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    
    import com.bumptech.glide.Glide;
    import com.bumptech.glide.request.RequestOptions;
    import com.lh.std_everything.R;
    
    public class ShowBookActivity extends AppCompatActivity{
        public TextView textViewbookname,textViewbookauthor,textViewbookpublish,textViewbookusername;
        public ImageView bookphoto;
        public LinearLayout lin_tree;
        public Bundle bundle;
        public String arr[]={"begin","one","two","three","four","five","six","seven","eight","nine","ten","others"};
        public String harr[]={"heh","第一章","第二章","第三章","第四章","第五章","第六章","第七章","第八章","第九章","第十章","其他"};
        public Integer iarr[]={0,1,2,3,4,5,6,7,8,9,11};
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_show_book);
            init();
    
            lin_tree.setOrientation(LinearLayout.VERTICAL);
            lin_tree.removeAllViews();
            if(bundle!=null)
            {
                for(int i=1;i<=11;i++)
                {
                    if(bundle.containsKey(arr[i]))
                    {
                        String key=bundle.getString(arr[i]);
                        TextView zhangjie=new TextView(this);
                        zhangjie.setText(harr[i]);
                        Log.i("章节展示:", ""+harr[i]);
                        zhangjie.setId(iarr[i]);
                        zhangjie.setTextSize(20);
                        zhangjie.setPadding(10,10,0,0);
                        lin_tree.addView(zhangjie);
                        zhangjie.setOnClickListener(v -> {
                            Bundle b1=new Bundle();
                            b1.putString("photos",key);
                            Intent intent =new Intent(ShowBookActivity.this,ShowBookAnswerActivity.class);
                            intent.putExtras(b1);
                            startActivity(intent);
                        });
                    }
                }
            }
        }
        public void init()
        {
            textViewbookauthor=findViewById(R.id.tv_bookauthor);
            textViewbookname=findViewById(R.id.tv_bookname);
            textViewbookpublish=findViewById(R.id.tv_bookpublish);
            textViewbookusername=findViewById(R.id.tv_username);
            bookphoto=findViewById(R.id.bookphoto);
            lin_tree=findViewById(R.id.lin_tree);
    
            bundle = getIntent().getExtras();
            if(bundle!=null)
            {
                Log.i("接收端的bundle的username", bundle.getString("username"));
                textViewbookusername.setText("上传者:"+bundle.getString("username"));
                textViewbookpublish.setText("出版社:"+bundle.getString("bookpublish"));
                textViewbookname.setText(bundle.getString("bookname"));
                textViewbookauthor.setText("作者:"+bundle.getString("bookauthor"));
                String urls[]=bundle.getString("head").split("\$");
                RequestOptions options = new RequestOptions()
                        .error(R.drawable.error)
                        .placeholder(R.drawable.loading);
                if(urls.length!=0) {
                    for(int i=0;i<urls.length;i++)
                    {
                        if(!urls[i].equals("null"))
                        {
                            Log.i("url",urls[i]);
                            Glide.with(this)
                                    .load(urls[i])
                                    .apply(options)
                                    .into(bookphoto);
                            break;
                        }
                    }
                }
            }
        }
    }
    View Code

    对应章节答案展示

     showbookanswerActivity

    package com.lh.std_everything.ui.home.hometype.studyshare.share;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    
    import com.bumptech.glide.Glide;
    import com.bumptech.glide.request.RequestOptions;
    import com.lh.std_everything.R;
    import com.lh.std_everything.ui.home.hometype.adapter.GridViewAdapter.GridViewAdapter;
    import com.lh.std_everything.ui.home.hometype.news.shownews.ShowNewsActivity;
    import com.lxj.xpopup.XPopup;
    
    public class ShowBookAnswerActivity extends AppCompatActivity {
        public LinearLayout lin_imgs;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_show_book_answer);
            Bundle bundle = getIntent().getExtras();
            String urls[]=bundle.getString("photos").split("\$");
            lin_imgs=findViewById(R.id.lin_imgs);
            RequestOptions options = new RequestOptions()
                    .error(R.drawable.error)
                    .placeholder(R.drawable.loading);
            if(urls.length!=0) {
                for(int i=0;i<urls.length;i++)
                {
                    if(!urls[i].equals("null"))
                    {
                        ImageView item=new ImageView(this);
                        Log.i("url",urls[i]);
                        Glide.with(this)
                                .load(urls[i])
                                .apply(options)
                                .into(item);
                        int finalI = i;
                        item.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                new XPopup.Builder(ShowBookAnswerActivity.this)
                                        .asImageViewer(item,urls[finalI],new GridViewAdapter.ImageLoader())
                                        .show();
                            }
                        });
                        lin_imgs.addView(item);
                    }
                }
            }
        }
    }
    View Code

    本次APP开发先告一段落,要开始复习了!!!!!

  • 相关阅读:
    jQuery之父:每天都写点代码
    XtraTabControl 控件使用
    Linq:使用Take和Skip实现分页
    WCF教程一之WCF是什么,能做什么
    WCF发布后远程访问的域名解析问题
    C# WinForm下,隐藏主窗体,只在进程管理器中显示进程,在任务栏,状态栏都不显示窗体的方法
    在bat脚本写入中文远行后乱码
    VS2010DebugView捕捉
    Web Service 的工作原理
    String.Format 方法
  • 原文地址:https://www.cnblogs.com/xiaofengzai/p/13028523.html
Copyright © 2020-2023  润新知