RecyclerView的简单应用

  1. 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{
    private Context context;
    private List mDatas;


    public FoodListAdapter(Context context, List 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 {
    private Context context;
    private List mDatas;
    private ListView lv;
    private Uri imageUri;
    private ContentResolver resolver;


    public FoodGridAdapter(Context context, List 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 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(){


            @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布局主布局
         
   

    
    
    

        

          ImageView布局对话框中的图片,把图片转换成View形势然后在设置
         
        


    


           GridView布局样式
        
   




    
    

         

         ListView布局
         
         
 

    
    
        
        
    


           
   //Menu 可以切换菜单形势,让菜单的内容随菜单而切换,变成ListView形势或GridView形势,我这只写了这两种
 

   
    




             
             

你可能感兴趣的:(RecyclerView的简单应用)