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);
}