OKHttp(网络请求数据)+Glide(网络请求图片)+RecyclerView(自定义View)+PopupWindow(三点菜单)+ToolBar(标题栏)+Notification(通知)

import android.annotation.SuppressLint;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;

import com.bumptech.glide.Glide;
import com.google.gson.Gson;
import com.squareup.okhttp.Callback;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity implements Click {

    private ListView lw;
    private GridView gw;
  //  private MyAdapter adapter;
    private MyAdapter2 adapter2;
    List<Bean.ResultBean> result = new ArrayList<>();
    @SuppressLint("HandlerLeak")
    Handler handler = new Handler() {




        @Override
        public void handleMessage(Message msg) {
            super.handleMessage( msg );
            switch (msg.what) {
                case 0:
                    Toast.makeText( MainActivity.this, (String) msg.obj, Toast.LENGTH_SHORT ).show();

                    break;
                case 1:
                    result = new Gson().fromJson( (String) msg.obj, Bean.class ).getResult();
                    //adapter = new MyAdapter( result, MainActivity.this );
//                    这是一个BaseAdapter适配器
//                    lw.setVisibility( View.VISIBLE );
//                    lw.setAdapter( adapter );
//                    gw.setAdapter( adapter );

                    //这是Recyclerview适配器

adapter2.setList( result );
                    break;
            }
        }
    };
    private Toolbar tb;

    private RecyclerView rw;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_main );
        initView();
        initData();
        initTooBar();
        //initListener();//ListView监听
        initListener2();//RecyclerView监听
            initNotifaction();//添加一个通知
    }

    private void initNotifaction() {
        NotificationManager service = (NotificationManager) getSystemService( Context.NOTIFICATION_SERVICE );
        PendingIntent pi=PendingIntent.getActivity( this,2,
                new Intent( this,Main2Activity.class ),PendingIntent.FLAG_UPDATE_CURRENT );
        Notification notif=new Notification.Builder(this)
                .setSmallIcon( R.mipmap.ic_launcher )
                .setContentText( "XXX请求加入好友" )
                .setContentTitle( "QQ" )
                .setContentIntent( pi )
                .build();
        service.notify( 1,notif );
    }

    private void initListener2() {
        rw.setLayoutManager( new LinearLayoutManager(MainActivity.this));
        adapter2 = new MyAdapter2( result, MainActivity.this );

        rw.setAdapter( adapter2 );
        adapter2.setClick( this);

    }

    private void initListener() {
        lw.setOnItemClickListener( new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                PopupWindow popupWindow = new PopupWindow();
                View inflate = LayoutInflater.from( MainActivity.this ).inflate( R.layout.layout, null );
                popupWindow.setContentView( inflate );
                TextView viewById = inflate.findViewById( R.id.tw_name );
                ImageView imgs = inflate.findViewById( R.id.img );
                TextView level = inflate.findViewById( R.id.tw_content );


                viewById.setText( result.get( position ).getName() );
                level.setText( result.get( position ).getLevel() );
                Glide.with( MainActivity.this ).load( result.get( position ).getImage_url() ).into( imgs );


                popupWindow.setHeight( ViewGroup.LayoutParams.WRAP_CONTENT );//宽高记住设
                popupWindow.setWidth( ViewGroup.LayoutParams.WRAP_CONTENT );
                popupWindow.setOutsideTouchable( true );


                popupWindow.setBackgroundDrawable( new BitmapDrawable() );
                // popupWindow.showAsDropDown(view);
                popupWindow.showAsDropDown( view, 100, 50 );
            }
        } );
        gw.setOnItemClickListener( new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                PopupWindow window = new PopupWindow();
                View inflate = View.inflate( MainActivity.this, R.layout.layout, null );
                window.setContentView( inflate );

                //获取每个控件,并赋值
                TextView name = inflate.findViewById( R.id.tw_name );
                TextView level = inflate.findViewById( R.id.tw_content );
                ImageView img = inflate.findViewById( R.id.img );
                name.setText( result.get( position ).getName() );
                level.setText( result.get( position ).getLevel() );
                Glide.with( MainActivity.this ).load( result.get( position ) ).into( img );

                //设置宽高
                window.setWidth( ViewGroup.LayoutParams.WRAP_CONTENT );
                window.setHeight( ViewGroup.LayoutParams.WRAP_CONTENT );
                //设置是否可以退出
                window.setOutsideTouchable( true );
                window.setBackgroundDrawable( new BitmapDrawable() );
                //设置显示位置
                window.showAsDropDown( view, 100, 20 );
            }
        } );
    }

    private void initTooBar() {
        tb = (Toolbar) findViewById( R.id.tb );
        //设置商标
        tb.setLogo( R.mipmap.ic_launcher );
        //设置标题
        tb.setTitle( "链表" );
        //副标题
        tb.setSubtitle( "交换" );
        //设置图标
        tb.setNavigationIcon( R.mipmap.ic_launcher_round );
        //图标点击事件
        tb.setNavigationOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText( MainActivity.this, "死了快带你疯狂老师带你疯狂老师带你飞机哦", Toast.LENGTH_SHORT ).show();
            }
        } );
        //把toolbar设置到界面
        setSupportActionBar( tb );
    }

    private void initData() {
        //网络请求对象
        Request re = new Request.Builder().url( "http://192.168.1.77:8080/demo1/test1.json" ).build();
        //把请求完的对象设给OKHttp
        new OkHttpClient().newCall( re ).enqueue( new Callback() {
            @Override//网络请求失败所走的方法
            public void onFailure(Request request, IOException e) {
                handler.sendMessage( handler.obtainMessage( 0, "网络请求失败" ) );
            }

            @Override//网络请求成功走的方法
            public void onResponse(Response response) throws IOException {
                handler.sendMessage( handler.obtainMessage( 1, response.body().string() ) );
            }
        } );

    }

    @Override//OptionsMenu菜单(三点菜单)
    public boolean onCreateOptionsMenu(Menu menu) {
        //添加菜单子标题
        menu.add( 1, 1, 1, "GRILD" );
        menu.add( 1, 2, 2, "LIST" );
        return super.onCreateOptionsMenu( menu );
    }

    @Override//根据ID给子标题设置点击事件
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case 1:
//                lw.setVisibility( View.GONE );
//                gw.setVisibility( View.VISIBLE );//ListView   GridView   之间的切换
                rw.setLayoutManager( new StaggeredGridLayoutManager( 3,LinearLayoutManager.HORIZONTAL ) );
                break;
            case 2:
                rw.setLayoutManager( new GridLayoutManager( MainActivity.this,2 ) );
//                gw.setVisibility( View.GONE );
//                lw.setVisibility( View.VISIBLE );
                break;
        }
        return super.onOptionsItemSelected( item );
    }

    private void initView() {
        lw = (ListView) findViewById( R.id.lw );
        gw = (GridView) findViewById( R.id.gw );


        rw = (RecyclerView) findViewById( R.id.rw );

    }

    @Override
    public void OnClickListen(View v, int position) {
        PopupWindow window = new PopupWindow();
        View inflate = View.inflate( MainActivity.this, R.layout.layout, null );
        window.setContentView( inflate );

        //获取每个控件,并赋值
        TextView name = inflate.findViewById( R.id.tw_name );
        TextView level = inflate.findViewById( R.id.tw_content );
        ImageView img = inflate.findViewById( R.id.img );
        name.setText( result.get( position ).getName() );
        level.setText( result.get( position ).getLevel() );
        Glide.with( MainActivity.this ).load( result.get( position ) .getImage_url()).into( img );

        //设置宽高
        window.setWidth( ViewGroup.LayoutParams.WRAP_CONTENT );
        window.setHeight( ViewGroup.LayoutParams.WRAP_CONTENT );
        //设置是否可以退出
        window.setOutsideTouchable( true );
        window.setBackgroundDrawable( new BitmapDrawable() );
        //设置显示位置
        window.showAsDropDown( v, 100, 20 );
    }

}


//这是
 
BaseAdapter 适配器

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;

import java.util.ArrayList;
import java.util.List;

/**
 * 类名 :MyAdapter
 *
 * @autuor :lenovo
 * @Time:2018/05/09
 */

class MyAdapter extends BaseAdapter {
    private List<Bean.ResultBean> list;
    private Context context;

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

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

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewH viewH;
        if (convertView == null) {
            convertView = View.inflate( context, R.layout.layout, null );
            viewH = new ViewH();
            viewH.name = convertView.findViewById( R.id.tw_name );
            viewH.level = convertView.findViewById( R.id.tw_content );
            viewH.img = convertView.findViewById( R.id.img );
            convertView.setTag( viewH );
        } else {
            viewH = (ViewH) convertView.getTag();
        }
        viewH.name.setText( list.get( position ).getName() );
        viewH.level.setText( list.get( position ).getLevel() );
        Glide.with( context ).load( list.get( position )
                .getImage_url() ).placeholder( R.drawable.ic_launcher_background ).into( viewH.img );

        return convertView;
    }

    private class ViewH {
        TextView name;
        TextView level;
        ImageView img;

    }
}
 
//这是
 
RecyclerView.Adapter<MyAdapter2.ViewH>
//点击通知要跳转的界面
 import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class Main2Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_main2 );
    }
}



//Gson解析需要的Bean对象

import com.google.gson.annotations.SerializedName;

import java.util.List;

/**
 * 类名 :Bean
 *
 * @autuor :lenovo
 * @Time:2018/05/09
 */

public class Bean {

    /**
     * message : 请求成功
     * code : 200
     * result : [{"name":"张三","level":"Android高级","image_url":"http://img.taodiantong.cn/v55183/infoimg/2013-07/130720115322ky.jpg"},{"name":"李四","level":"Android中级","image_url":"http://pic30.nipic.com/20130626/8174275_085522448172_2.jpg"},{"name":"王五","level":"Android初级","image_url":"http://pic18.nipic.com/20111215/577405_080531548148_2.jpg"},{"name":"赵六","level":"Android中级","image_url":"http://pic15.nipic.com/20110722/2912365_092519919000_2.jpg"},{"name":"陈七","level":"Android高级","image_url":"http://img3.imgtn.bdimg.com/it/u=626922433,1525499432&fm=27&gp=0.jpg"},{"name":"曹八","level":"Android初级","image_url":"http://pic.58pic.com/58pic/12/64/27/55U58PICrdX.jpg"},{"name":"周九","level":"Android高级","image_url":"http://img.taodiantong.cn/v55183/infoimg/2013-07/130720115322ky.jpg"},{"name":"冯十","level":"Android初级","image_url":"http://img1.imgtn.bdimg.com/it/u=4181886544,1354867999&fm=27&gp=0.jpg"},{"name":"刘一","level":"Android中级","":"http://pic30.nipic.com/20130626/8174275_085522448172_2.jpg"},{"name":"王二","level":"Android高级","image_url":"http://img3.imgtn.bdimg.com/it/u=626922433,1525499432&fm=27&gp=0.jpg"},{"name":"赵三","level":"Android初级","image_url":"http://img1.imgtn.bdimg.com/it/u=4181886544,1354867999&fm=27&gp=0.jpg"},{"name":"陈三","level":"Android高级","image_url":"http://pic18.nipic.com/20111215/577405_080531548148_2.jpg"},{"name":"周周","level":"Android中级","image_url":"http://pic15.nipic.com/20110722/2912365_092519919000_2.jpg"}]
     */

    private String message;
    private int code;
    private List<ResultBean> result;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public List<ResultBean> getResult() {
        return result;
    }

    public void setResult(List<ResultBean> result) {
        this.result = result;
    }

    public static class ResultBean {
        /**
         * name : 张三
         * level : Android高级
         * image_url : http://img.taodiantong.cn/v55183/infoimg/2013-07/130720115322ky.jpg
         *  : http://pic30.nipic.com/20130626/8174275_085522448172_2.jpg
         */

        private String name;
        private String level;
        private String image_url;
        @SerializedName("")
        private String _$268; // FIXME check this code

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getLevel() {
            return level;
        }

        public void setLevel(String level) {
            this.level = level;
        }

        public String getImage_url() {
            return image_url;
        }

        public void setImage_url(String image_url) {
            this.image_url = image_url;
        }

        public String get_$268() {
            return _$268;
        }

        public void set_$268(String _$268) {
            this._$268 = _$268;
        }
    }
}


import android.content.Context;
        import android.support.v7.widget.RecyclerView;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.ImageView;
        import android.widget.TextView;
        import com.bumptech.glide.Glide;
        import java.util.List;

/**
 * 类名 :MyAdapter2 * * @autuor :lenovo * @Time:2018/05/09
 */
public class MyAdapter2 extends RecyclerView.Adapter<MyAdapter2.ViewH> {
    private List<Bean.ResultBean> list;
    private Context context;
    private Click click;

    public void setClick(Click click) {
        this.click = click;
    }

    public void setList(List<Bean.ResultBean> list) {
        this.list = list;
    }

    public MyAdapter2(List<Bean.ResultBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public ViewH onCreateViewHolder(ViewGroup parent, int viewType) {
        return new ViewH( View.inflate( context, R.layout.layout, null ) );
    }

    @Override
    public void onBindViewHolder(ViewH holder, final int position) {
        holder.name.setText( list.get( position ).getName() );
        holder.level.setText( list.get( position ).getLevel() );
        //网络地址请求图片  需要Glide依赖
        Glide.with( context ).load( list.get( position )
                .getImage_url() ).placeholder( R.drawable.ic_launcher_background ).into( holder.img );
        holder.itemView.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                click.OnClickListen( v, position );
            }
        } );
    }

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

    public class ViewH extends RecyclerView.ViewHolder {
        TextView name;
        TextView level;
        ImageView img;

        public ViewH(View itemView) {
            super( itemView );
            name = itemView.findViewById( R.id.tw_name );
            level = itemView.findViewById( R.id.tw_content );
            img = itemView.findViewById( R.id.img );
        }
    }
}

interface Click {
    void OnClickListen(View v, int position);
}




  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值