- ListVIew适配器
import android.content.Context;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.squareup.picasso.Picasso;
import java.util.List;
/**
*
*/
public class FoodListAdapter extends RecyclerView.Adapter<FoodListAdapter.FooterViewHolder>{
private Context context;
private List<FoodEntry.DataBean> mDatas;
public FoodListAdapter(Context context, List<FoodEntry.DataBean> mDatas) {
this.context = context;
this.mDatas = mDatas;
}
@Override
public FooterViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView= LayoutInflater.from(context).inflate(R.layout.item_list,parent,false);
FooterViewHolder holder=new FooterViewHolder(itemView);
return holder;
}
@Override
public void onBindViewHolder(FooterViewHolder holder, final int position) {
FoodEntry.DataBean dataBean=mDatas.get(position);
holder.tv1_list.setText(dataBean.getTitle());
holder.tv2_list.setText(dataBean.getFood_str());
Picasso.with(context).load(dataBean.getPic()).into(holder.iv_list);
final String as=mDatas.get(position).getTitle();
final String asd=mDatas.get(position).getFood_str();
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder builder=new AlertDialog.Builder(context);
builder.setTitle(as);
View dilogView=LayoutInflater.from(context).inflate(R.layout.image_dialog,null);
ImageView iv=(ImageView)dilogView.findViewById(R.id.iv_dialog);
Picasso.with(context).load(mDatas.get(position).getPic()).into(iv);
builder.setView(dilogView);
builder.setMessage("配料:"+asd);
builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(context, mDatas.get(position).getTitle(), Toast.LENGTH_SHORT).show();
}
});
builder.create().show();
}
});
}
@Override
public int getItemCount() {
return mDatas.size();
}
class FooterViewHolder extends RecyclerView.ViewHolder{
TextView tv1_list,tv2_list;
ImageView iv_list;
public FooterViewHolder(View itemView) {
super(itemView);
tv1_list=(TextView)itemView.findViewById(R.id.tv1_list);
tv2_list=(TextView)itemView.findViewById(R.id.tv2_list);
iv_list=(ImageView)itemView.findViewById(R.id.iv_list);
}
}
}
//GridView的适配器
package com.jj.weekone_simulate;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.net.Uri;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.squareup.picasso.Picasso;
import java.util.List;
/**
* Created by jj on 2017/12/31.
*/
public class FoodGridAdapter extends RecyclerView.Adapter<FoodGridAdapter.Hello> {
private Context context;
private List<FoodEntry.DataBean> mDatas;
private ListView lv;
private Uri imageUri;
private ContentResolver resolver;
public FoodGridAdapter(Context context, List<FoodEntry.DataBean> mDatas) {
this.context = context;
this.mDatas = mDatas;
}
public FoodGridAdapter(View itemview) {
}
@Override
public Hello onCreateViewHolder(ViewGroup parent, int viewType) {
View itemview=LayoutInflater.from(context).inflate(R.layout.item_grid,parent,false);
Hello hello=new Hello(itemview);
return hello;
}
@Override
public void onBindViewHolder(Hello holder, final int position) {
FoodEntry.DataBean dataBean=mDatas.get(position);
holder.tv_grid.setText(dataBean.getTitle());
Picasso.with(context).load(dataBean.getPic()).into(holder.iv_grid);
final String as=mDatas.get(position).getTitle();
final String asd=mDatas.get(position).getFood_str();
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(as);
View dialogView=LayoutInflater.from(context).inflate(R.layout.image_dialog,null);
ImageView iv_dialog=(ImageView)dialogView.findViewById(R.id.iv_dialog);
Picasso.with(context).load(mDatas.get(position).getPic()).into(iv_dialog);
builder.setView(dialogView);
builder.setMessage("配料:"+asd);
builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(context, as, Toast.LENGTH_SHORT).show();
}
});
builder.create().show();
}
});
}
@Override
public int getItemCount() {
return mDatas.size();
}
class Hello extends RecyclerView.ViewHolder{
TextView tv_grid;
ImageView iv_grid;
public Hello(View itemView) {
super(itemView);
tv_grid=(TextView)itemView.findViewById(R.id.tv_grid);
iv_grid=(ImageView)itemView.findViewById(R.id.iv_grid);
}
}
}
//MainActivity
package com.jj.weekone_simulate;
import android.annotation.TargetApi;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
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.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private String path=""; // 地址
private List<FoodEntry.DataBean> list=new ArrayList<>();
private RecyclerView rv;
private LinearLayoutManager manager;
private FoodGridAdapter foodGridAdapter;
private FoodListAdapter foodListAdapter;
private Toolbar toolbar;
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar=(Toolbar)findViewById(R.id.toolbar);
rv=(RecyclerView)findViewById(R.id.moive_rv);
manager=new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
rv.setLayoutManager(manager);
foodListAdapter=new FoodListAdapter(this,list);
rv.setAdapter(foodListAdapter);
loadData();
Too();
rv.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
}
});
}
private void Too() {
toolbar.setLogo(R.mipmap.ic_launcher);
toolbar.setTitle("今晚菜单");
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitle("金典菜品:爆炒小龙虾");
}
private void loadData() {
new AsyncTask<Void,Void,String>(){
@Override
protected String doInBackground(Void... voids) {
return HttpUtils.getJSONContent(path);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (!s.isEmpty()){
Gson gson=new Gson();
FoodEntry foodEntity=gson.fromJson(s,FoodEntry.class);
list.addAll(foodEntity.getData());
foodListAdapter.notifyDataSetChanged();
// foodGridAdapter.notifyDataSetChanged();
}
}
}.execute();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.vmoive_menu,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.list_menu:
rv.setLayoutManager(manager);
rv.setAdapter(foodListAdapter);
break;
case R.id.grid_menu:
GridLayoutManager gridLayoutManager=new GridLayoutManager(this,2);
rv.setLayoutManager(gridLayoutManager);
foodGridAdapter=new FoodGridAdapter(this,list);
rv.setAdapter(foodGridAdapter);
break;
}
return super.onOptionsItemSelected(item);
}
}
//网络下载的方式,主要不网络下载的方式,封装到了一个方法里面
package com.jj.weekone_simulate;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* Created by jj on 2017/12/30.
*/
public class HttpUtils {
public static String getJSONContent(String path){
try {
URL url=new URL(path);
HttpURLConnection conn=(HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.connect();
if (conn.getResponseCode()==200){
int len=0;
byte[] b=new byte[1024];
InputStream inputStream=conn.getInputStream();
ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
while ((len=inputStream.read(b))!=-1){
outputStream.write(b,0,len);
}
return outputStream.toString();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
mainActivity布局主布局
<?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_main2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.jj.weekone_simulate.MainActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:background="@color/colorPrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.Toolbar>
<android.support.v7.widget.RecyclerView
android:id="@+id/moive_rv"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
</LinearLayout>
ImageView布局对话框中的图片,把图片转换成View形势然后在设置
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/iv_dialog"
android:layout_width="match_parent"
android:layout_height="220dp"
android:src="@mipmap/ic_launcher"/>
</LinearLayout>
GridView布局样式
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_margin="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_grid"
android:layout_width="match_parent"
android:layout_height="160dp"
android:scaleType="centerCrop"
app:srcCompat="@mipmap/ic_launcher" />
<TextView
android:id="@+id/tv_grid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="东方天下"
android:textSize="20dp"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:layout_below="@id/iv_grid"
android:textColor="@android:color/black" />
</RelativeLayout>
ListView布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_list"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@mipmap/ic_launcher"
android:layout_gravity="center"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv1_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="东方无敌"
android:textSize="20sp"
android:textColor="@android:color/black"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:gravity="center"/>
<TextView
android:id="@+id/tv2_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="东方不败"
android:textSize="15sp"
android:layout_marginTop="20dp"
android:layout_marginLeft="10dp"
android:gravity="center"/>
</LinearLayout>
</LinearLayout>
//Menu 可以切换菜单形势,让菜单的内容随菜单而切换,变成ListView形势或GridView形势,我这只写了这两种
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/list_menu"
android:title="列表布局"
android:showAsAction="collapseActionView"/>
<item android:id="@+id/grid_menu"
android:title="网格布局"
android:showAsAction="collapseActionView"/>
</menu>