本地读取
在src--->main--->定义assets文件夹放入要解析的文件(kiekou.json)
效果图
注意 :分割线有点bug,谁会可以告诉我是那里的问题,谢谢
布局
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:textSize="18dp"
android:text="游戏"
android:gravity="center"/>
<CheckBox
android:button="@null"
android:id="@+id/o_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/a"/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="#ff0"></View>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/o_rec"></android.support.v7.widget.RecyclerView>
条目布局
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@mipmap/ic_launcher"
android:id="@+id/l_pic"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="asdasdsadsa"
android:textSize="18dp"
android:id="@+id/l_name"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="33M"
android:textSize="18dp"
android:id="@+id/l_size"/>
<TextView
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="/"
android:textSize="18dp"
/>
<TextView
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="99万"
android:textSize="18dp"
android:id="@+id/l_num"/>
</LinearLayout>
</LinearLayout>
pop布局
<TextView
android:layout_width="match_parent"
android:gravity="center"
android:layout_height="wrap_content"
android:text="当前名称"
android:textSize="18dp"
/>
<TextView
android:id="@+id/p_name"
android:layout_width="match_parent"
android:gravity="center"
android:layout_height="wrap_content"
android:text="问道"
android:padding="10dp"
android:textSize="18dp"
/>
activity类
public class MainActivity extends AppCompatActivity {
private List<Bean.ApkBean> apk;
private RecyclerView rec;
private MyList my;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
//找空件
private void initView() {
CheckBox button = (CheckBox) findViewById(R.id.o_button);
rec = (RecyclerView) findViewById(R.id.o_rec);
//切换设置点击
button.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//如果点击就显示网格型的
if(isChecked){
rec.setLayoutManager(new GridLayoutManager(MainActivity.this,2,GridLayoutManager.VERTICAL,false));
rec.addItemDecoration(new RecyclerViewDivider(MainActivity.this,GridLayoutManager.HORIZONTAL,2, Color.BLUE));
rec.addItemDecoration(new RecyclerViewDivider(MainActivity.this,GridLayoutManager.VERTICAL,2, Color.BLUE));
getSerever();
}else{
//线型
rec.setLayoutManager(new LinearLayoutManager(MainActivity.this,LinearLayoutManager.VERTICAL,false));
// rec.addItemDecoration(new RecyclerViewDivider(MainActivity.this,LinearLayoutManager.HORIZONTAL,2, Color.RED));
getSerever();
}
}
});
//返回字符串进行Gson解析
String data = getData("jiekou.json");
Gson gson =new Gson ();
Bean bean = gson.fromJson(data, Bean.class);
apk = bean.getApk();
rec.setLayoutManager(new LinearLayoutManager(MainActivity.this,LinearLayoutManager.VERTICAL,false));
rec.addItemDecoration(new RecyclerViewDivider(MainActivity.this,LinearLayoutManager.HORIZONTAL,2, Color.RED));
getSerever();
//条目设置点击删除
my.setOnItemLisener(new MyList.OnItemLisener() {
@Override
public void IteLiseren(View view, int position) {
apk.remove(position);
getSerever();
}
});
final View view_pop =View.inflate(MainActivity.this,R.layout.pop_main,null);
final TextView name = (TextView) view_pop.findViewById(R.id.p_name);
final PopupWindow pop =new PopupWindow(view_pop, ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT);
//条目长按弹出POP显示名称
my.setOnItemLongLisener(new MyList.OnItemLongLisener() {
@Override
public void IteLongLiseren(View view, int position) {
pop.showAtLocation(view_pop, Gravity.CENTER,0,0);
name.setText(apk.get(position).getName());
}
});
pop.setOutsideTouchable(true);
pop.setBackgroundDrawable(new BitmapDrawable());
}
//刷新
private void getSerever() {
if(my==null){
my = new MyList(MainActivity.this,apk);
rec.setAdapter(my);
}else{
my.notifyDataSetChanged();
}
}
//读取本地文件
private String getData(String url) {
try {
InputStream open = getAssets().open(url);
byte [] by =new byte[1024];
int num =0;
ByteArrayOutputStream bos =new ByteArrayOutputStream();
while ((num =open.read(by))!=-1){
bos.write(by,0,num);
}
return bos.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
适配器
public class MyList extends RecyclerView.Adapter<MyList.ViewHolder>{
private Context context;
private List<Bean.ApkBean> apk;
private OnItemLisener onItemLisener;
public interface OnItemLisener{
void IteLiseren(View view,int position);
}
public void setOnItemLisener(OnItemLisener onItemLisener) {
this.onItemLisener = onItemLisener;
}
private OnItemLongLisener onItemLongLisener;
public interface OnItemLongLisener{
void IteLongLiseren(View view,int position);
}
public void setOnItemLongLisener(OnItemLongLisener onItemLongLisener) {
this.onItemLongLisener = onItemLongLisener;
}
public MyList(Context context, List<Bean.ApkBean> apk) {
this.context=context;
this.apk =apk;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.list_main,null);
final ViewHolder holder =new ViewHolder(view);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = holder.getLayoutPosition();
if(onItemLisener!=null){
onItemLisener.IteLiseren(v,position);
}
}
});
view.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
int position = holder.getLayoutPosition();
if(onItemLongLisener !=null){
onItemLongLisener.IteLongLiseren(v,position);
}
return true;
}
});
return holder;
}
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
holder.name.setText(apk.get(position).getName());
String size =apk.get(position).getApkSize();
int i = Integer.parseInt(size);
i = i / 1024 / 1024;
holder.size.setText(i+"M");
String substring = apk.get(position).getDownloadTimes().substring(0, 2);
int parseInt = Integer.parseInt(substring);
holder.num.setText(parseInt+"万");
Glide.with(context).load(apk.get(position).getIconUrl()).into(holder.pic);
}
@Override
public int getItemCount() {
return apk.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
private final TextView name;
private final TextView size;
private final TextView num;
private final ImageView pic;
public ViewHolder(View itemView) {
super(itemView);
name = (TextView) itemView.findViewById(R.id.l_name);
size = (TextView) itemView.findViewById(R.id.l_size);
num = (TextView) itemView.findViewById(R.id.l_num);
pic = (ImageView) itemView.findViewById(R.id.l_pic);
}
}
}