/*activity_main.xml主布局*/
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="test.bwie.com.luzhiwei20170405.MainActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageButton android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/iv_change" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_marginRight="11dp" android:layout_marginEnd="11dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25sp" android:gravity="center" android:text="游戏" android:layout_centerVertical="true" android:layout_centerHorizontal="true" /> </RelativeLayout> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
/*item.xml*/<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="horizontal" android:layout_height="match_parent"> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:id="@+id/imagev" android:layout_width="80dp" android:layout_height="80dp" /> </RelativeLayout> <LinearLayout android:layout_width="match_parent" android:orientation="vertical" android:layout_height="80dp"> <RelativeLayout android:layout_marginTop="10dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="梦幻西游" android:textSize="15sp" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_marginRight="30dp" android:layout_marginEnd="30dp" /> </RelativeLayout> <RelativeLayout android:layout_marginTop="5dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/cishu" android:textSize="10sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="99万" android:layout_weight="1" android:layout_marginRight="37dp" android:layout_marginEnd="37dp" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" /> <TextView android:id="@+id/daxiao" android:textSize="10sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="300M" android:layout_alignParentTop="true" android:layout_toLeftOf="@+id/cishu" android:layout_toStartOf="@+id/cishu" /> </RelativeLayout> </LinearLayout> </LinearLayout>
/*popup.xml*/<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/popup" android:layout_width="match_parent" android:gravity="center" android:layout_height="wrap_content" android:textSize="20sp" android:text="诛仙"/> </LinearLayout>/*imageloader图片加载*/
import android.app.Application; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; /** * Created by lenovo on 2017/4/5. * imageloader图片加载 * 需要在AndroidManifest.xml方法中: * android:name=".MyApplication" */ public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); //创建默认的ImageLoader配置参数 ImageLoaderConfiguration configuration = ImageLoaderConfiguration .createDefault(this); DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) // resource or drawable .showImageOnFail(R.mipmap.ic_launcher) // resource or drawable .build(); //Initialize ImageLoader with configuration. ImageLoader.getInstance().init(configuration); } }/*bean类*//** * Created by lenovo on 2017/4/5. */ //bean类,通过网址的json数据用插件GsonFromt自动勾选需要的数据生成 public class Bean { private int dataSize; private List<ApkBean> apk; public int getDataSize() { return dataSize; } public void setDataSize(int dataSize) { this.dataSize = dataSize; } public List<ApkBean> getApk() { return apk; } public void setApk(List<ApkBean> apk) { this.apk = apk; } public static class ApkBean { private String id; private String name; private String iconUrl; private String downloadUrl; private String packageName; private String versionName; private String versionCode; private String apkSize; private String downloadTimes; private String categoryName; private String from; private int markid; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getIconUrl() { return iconUrl; } public void setIconUrl(String iconUrl) { this.iconUrl = iconUrl; } public String getDownloadUrl() { return downloadUrl; } public void setDownloadUrl(String downloadUrl) { this.downloadUrl = downloadUrl; } public String getPackageName() { return packageName; } public void setPackageName(String packageName) { this.packageName = packageName; } public String getVersionName() { return versionName; } public void setVersionName(String versionName) { this.versionName = versionName; } public String getVersionCode() { return versionCode; } public void setVersionCode(String versionCode) { this.versionCode = versionCode; } public String getApkSize() { return apkSize; } public void setApkSize(String apkSize) { this.apkSize = apkSize; } public String getDownloadTimes() { return downloadTimes; } public void setDownloadTimes(String downloadTimes) { this.downloadTimes = downloadTimes; } public String getCategoryName() { return categoryName; } public void setCategoryName(String categoryName) { this.categoryName = categoryName; } public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public int getMarkid() { return markid; } public void setMarkid(int markid) { this.markid = markid; } } }/*MainActivity.java主方法*/import android.graphics.Color; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.Gravity; import android.view.View; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.PopupWindow; import android.widget.TextView; import android.widget.Toast; import com.google.gson.Gson; import com.squareup.okhttp.Call; 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.List; import test.bwie.com.luzhiwei20170405.adapter.AdapterRecyView; import test.bwie.com.luzhiwei20170405.bean.Bean; public class MainActivity extends AppCompatActivity { private RecyclerView rl; private ImageButton image; private PopupWindow mPopupWindow; private AdapterRecyView adapter; private List<Bean.ApkBean> list; private PopupWindow popupWindow; int a=2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取控件的方法 initView(); initDate(); } //获取控件 private void initView() { rl = (RecyclerView) findViewById(R.id.recyclerview); image = (ImageButton) findViewById(R.id.image); } private void initDate() { //OKhttp请求数据 OkHttpClient okHttpClient=new OkHttpClient(); Request request=new Request.Builder(). url("http://60.205.221.238/stylesheets/newslist.txt"). build(); //call接口回调 Call call= okHttpClient.newCall(request); call.enqueue(new Callback() { //请求失败 @Override public void onFailure(Request request, IOException e) { } //请求成功 @Override public void onResponse(Response response) throws IOException { //转换成String final String json= response.body().string(); runOnUiThread(new Runnable() { @Override public void run() { //gson实例化 Gson gson=new Gson(); //解析数据 Bean bean= gson.fromJson(json,Bean.class); //得到集合 list = bean.getApk(); //适配器 adapter = new AdapterRecyView(MainActivity.this, list); rl.setAdapter(adapter); setlinview(); //点击监听 image.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //切换模式 if(a==1){ a++; setlinview(); }else{ setGrilView(); a=1; } } }); } }); } }); } //实现两列 private void setGrilView() { GridLayoutManager manager=new GridLayoutManager(this,2); //布局管理器 rl.setLayoutManager(manager); //分割线 rl.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL)); rl.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.HORIZONTAL)); //条目点击监听 adapter.setOnItemClickListener(new AdapterRecyView.OnItemClickListener() { @Override public void onItemClick(View view, int position) { LinearLayout layout = new LinearLayout(MainActivity.this); layout.setBackgroundColor(Color.GRAY); TextView tv = new TextView(MainActivity.this); tv.setLayoutParams(new GridLayoutManager.LayoutParams(GridLayoutManager.LayoutParams.WRAP_CONTENT, GridLayoutManager.LayoutParams.WRAP_CONTENT)); tv.setText(list.get(position).getName()); tv.setTextColor(Color.WHITE); layout.addView(tv); //popupwindow popupWindow = new PopupWindow(layout,100,100); popupWindow.setFocusable(true); popupWindow.setOutsideTouchable(true); popupWindow.setBackgroundDrawable(new BitmapDrawable()); int[] location = new int[2]; view.getLocationOnScreen(location); popupWindow.showAtLocation(view, Gravity.NO_GRAVITY, location[0], location[1]- popupWindow.getHeight()); } }); //条目长按监听 adapter.setOnItemLongClickListener(new AdapterRecyView.OnItemLongClickListener() { @Override public void onItemLongClick(View view, int position) { adapter.removeItem(position); Toast.makeText(MainActivity.this,"数据已删除",Toast.LENGTH_SHORT).show(); } }); } private void setlinview() { LinearLayoutManager manager=new LinearLayoutManager(this); //布局管理器 rl.setLayoutManager(manager); //分割线 rl.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL)); } }/*适配器*//** * Created by lenovo on 2017/4/5. */ //适配器 public class AdapterRecyView extends RecyclerView.Adapter<AdapterRecyView.ViewHolder> { Context context; List<Bean.ApkBean> list; public interface OnItemClickListener{ void onItemClick(View view,int position); } public interface OnItemLongClickListener{ void onItemLongClick(View view,int position); } private OnItemClickListener mOnItemClickListener; private OnItemLongClickListener mOnItemLongClickListener; public void setOnItemClickListener(OnItemClickListener mOnItemClickListener){ this.mOnItemClickListener = mOnItemClickListener; } public void setOnItemLongClickListener(OnItemLongClickListener mOnItemLongClickListener) { this.mOnItemLongClickListener = mOnItemLongClickListener; } public AdapterRecyView (Context context,List<Bean.ApkBean> list){ this.context=context; this.list=list; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //返回ViewHolder对象,通过构造方法传入加载布局文件得到的view对象 View view= View.inflate(context, R.layout.item,null); ViewHolder holder=new ViewHolder(view); return holder; } //删除数据 public void removeItem(int pos){ list.remove(pos); notifyItemRemoved(pos); } @Override public void onBindViewHolder(final ViewHolder holder, int position) { int i= Integer.parseInt(list.get(position).getApkSize())/1024/1024; int j= Integer.parseInt(list.get(position).getDownloadTimes())/10000; holder.name.setText(list.get(position).getName()); holder.cishu.setText(j+"万"); holder.daxiao.setText(i+"M"+"/"); // Glide.with(context).load(list.get(position).getIconUrl()).into(holder.image); //通过ImageLoader对象的displayImage方法将网址中下载的图片按照设置的图片配置显示再imageview中 ImageLoader.getInstance().displayImage(list.get(position).getIconUrl(),holder.image); //判断是否设置了监听器 if(mOnItemClickListener != null){ //为ItemView设置监听器 holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = holder.getLayoutPosition(); // 1 mOnItemClickListener.onItemClick(holder.itemView,position); // 2 } }); } if(mOnItemLongClickListener != null){ holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { int position = holder.getLayoutPosition(); mOnItemLongClickListener.onItemLongClick(holder.itemView,position); //返回true 表示消耗了事件 事件不会继续传递 return true; } }); } } @Override//返回数据源大小 public int getItemCount() { return list.size(); } //自定义MyViewHolder类用于复用 public class ViewHolder extends RecyclerView.ViewHolder { //声明imageview对象 private final ImageView image; private final TextView name; private final TextView cishu; private final TextView daxiao; //构造方法中初始化imageview对象 public ViewHolder(View itemView) { super(itemView); image = (ImageView) itemView.findViewById(R.id.imagev); name = (TextView) itemView.findViewById(R.id.name); cishu = (TextView) itemView.findViewById(R.id.cishu); daxiao = (TextView) itemView.findViewById(R.id.daxiao); } } }