DrawerLayout布局代码块,解析网络数据代码块,多条目适配器代码块,字节流转字符串代码块

来源:互联网 发布:建筑绘图软件 编辑:程序博客网 时间:2024/05/22 08:23

DrawerLayout  布局文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    android:id="@+id/drewarlayout"
    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"
    tools:context="com.example.administrator.drawerlayout.MainActivity">

    //主内容区

    <FrameLayout
        android:id="@+id/framelayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </FrameLayout>
    <LinearLayout
        android:id="@+id/linear_layou"
        android:background="#ffffff"
        android:orientation="vertical"
        android:layout_gravity="left"
        android:layout_width="170dp"
        android:layout_height="match_parent">
        <ImageView
            android:id="@+id/imageview"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:src="@mipmap/ic_launcher"/>
        <ListView
            android:id="@+id/listview"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        </ListView>
        
    </LinearLayout>


</android.support.v4.widget.DrawerLayout>



简单的多条目适配器代码  两种样式


public class MyAdapter extends BaseAdapter {
    Context context; List<DataDataBean.DataBean> list;

    int LEFT_ITEM=0;
    int RIGHT_ITEM=1;

    public MyAdapter(Context context, List<DataDataBean.DataBean> list) {
        this.context = context;
        this.list=list;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int i) {
        return list.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public int getViewTypeCount() {
        return 2;
    }

    @Override
    public int getItemViewType(int position) {
        if (position%2==0){
            return LEFT_ITEM;
        }
        return RIGHT_ITEM;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        if (getItemViewType(i)==LEFT_ITEM){
            ViewHolder viewholder;
            if (view==null){
                view = View.inflate(context,R.layout.xlistview_layout,null);
                viewholder = new ViewHolder();
                viewholder.imageview=view.findViewById(R.id.imageview);
                viewholder.textview=view.findViewById(R.id.textview);
                view.setTag(viewholder);
            }else{
                viewholder = (ViewHolder) view.getTag();
            }
            //viewholder.imageview.setImageResource(R.mipmap.ic_launcher);
            ImageLoader.getInstance().displayImage(list.get(i).getImg(),viewholder.imageview, ImageLoderUtils.getDeFaultOption());
            viewholder.textview.setText(list.get(i).getIntroduction());
        }else if(getItemViewType(i)==RIGHT_ITEM){
            ViewHolder viewholder;
            if (view==null){
                view = View.inflate(context,R.layout.right_layout,null);
                viewholder = new ViewHolder();
                viewholder.imageview=view.findViewById(R.id.imageview);
                viewholder.textview=view.findViewById(R.id.textview);
                view.setTag(viewholder);
            }else{
                viewholder = (ViewHolder) view.getTag();
            }
            //viewholder.imageview.setImageResource(R.mipmap.ic_launcher);
            ImageLoader.getInstance().displayImage(list.get(i).getImg(),viewholder.imageview, ImageLoderUtils.getDeFaultOption());
            viewholder.textview.setText(list.get(i).getIntroduction());
        }
        return view;
    }

    class ViewHolder{
        ImageView imageview;
        TextView textview;
    }
}


//单独抽取设置适配器的方法

private void setAdapter() {
        //设置适配器
        if (adapter==null) {
            adapter = new MyAdapter(getActivity(), lists);
            xlistview.setAdapter(adapter);
        }else{
            adapter.notifyDataSetChanged();
        }
    }


//解析网络数据代码块

AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() {
            @Override
            protected String doInBackground(Void... voids) {
                //字符串地址
                //String path ="http://v.juhe.cn/toutiao/index?type="+name+"&key=89443734f104eb39878a911a282055d3";
                String path = "http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+page_num;
                //将字符串转换为网络地址
                try {
                    URL url = new URL(path);
                    //打开
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    //设置
                    connection.setRequestMethod("GET");
                    connection.setReadTimeout(5000);
                    connection.setConnectTimeout(5000);
                    //获得状态码
                    int responseCode = connection.getResponseCode();
                    if (responseCode==200){
                        InputStream inputStream = connection.getInputStream();
                        String json = streamToString(inputStream, "utf-8");
                        Log.d("TAG","解析的数据为++++++"+json);
                        return json;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }

            @Override
            protected void onPostExecute(String s) {
                Gson gson = new Gson();
                DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class);
                List<DataDataBean.DataBean> list = dataDataBean.getData();
                lists.addAll(list);
                //设置适配器
                setAdapter();
                xlistview.stopLoadMore();
            }
        };
        asyncTask.execute();
    }


//获取网络数据字节流转字符串

private String streamToString(InputStream inputStream, String charset) {    try {        //转换流,将字节流转字符串,并转换编码        InputStreamReader inputStreamReader = new InputStreamReader(inputStream, charset);        //字符缓冲流        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);        //字符串缓冲区        StringBuilder stringBuilder = new StringBuilder();        //        String len = null;        //按行读        while((len=bufferedReader.readLine())!=null){            //追加到字符串缓冲区存放            stringBuilder.append(len);        }        //将字符串返回        return stringBuilder.toString();    } catch (Exception e) {        e.printStackTrace();    }    return null;}



原创粉丝点击