RecyclerView的简单应用

本文介绍了一种使用RecyclerView实现食品列表与网格视图的方法,并通过点击事件展示详细信息。该方案适用于Android应用开发中动态加载数据并根据不同布局需求调整显示形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  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<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>



             
             

内容概要:该PPT详细介绍了企业架构设计的方法论,涵盖业务架构、数据架构、应用架构和技术架构四大核心模块。首先分析了企业架构现状,包括业务、数据、应用和技术四大架构的内容和关系,明确了企业架构设计的重要性。接着,阐述了新版企业架构总体框架(CSG-EAF 2.0)的形成过程,强调其融合了传统架构设计(TOGAF)和领域驱动设计(DDD)的优势,以适应数字化转型需求。业务架构部分通过梳理企业级和专业级价值流,细化业务能力、流程和对象,确保业务战略的有效落地。数据架构部分则遵循五大原则,确保数据的准确、一致和高效使用。应用架构方面,提出了分层解耦和服务化的设计原则,以提高灵活性和响应速度。最后,技术架构部分围绕技术框架、组件、平台和部署节点进行了详细设计,确保技术架构的稳定性和扩展性。 适合人群:适用于具有一定企业架构设计经验的IT架构师、项目经理和业务分析师,特别是那些希望深入了解如何将企业架构设计与数字化转型相结合的专业人士。 使用场景及目标:①帮助企业和组织梳理业务流程,优化业务能力,实现战略目标;②指导数据管理和应用开发,确保数据的一致性和应用的高效性;③为技术选型和系统部署提供科学依据,确保技术架构的稳定性和扩展性。 阅读建议:此资源内容详尽,涵盖企业架构设计的各个方面。建议读者在学习过程中,结合实际案例进行理解和实践,重点关注各架构模块之间的关联和协同,以便更好地应用于实际工作中。
资 源 简 介 独立分量分析(Independent Component Analysis,简称ICA)是近二十年来逐渐发展起来的一种盲信号分离方法。它是一种统计方法,其目的是从由传感器收集到的混合信号中分离相互独立的源信号,使得这些分离出来的源信号之间尽可能独立。它在语音识别、电信和医学信号处理等信号处理方面有着广泛的应用,目前已成为盲信号处理,人工神经网络等研究领域中的一个研究热点。本文简要的阐述了ICA的发展、应用和现状,详细地论述了ICA的原理及实现过程,系统地介绍了目前几种主要ICA算法以及它们之间的内在联系, 详 情 说 明 独立分量分析(Independent Component Analysis,简称ICA)是近二十年来逐渐发展起来的一种盲信号分离方法。它是一种统计方法,其目的是从由传感器收集到的混合信号中分离相互独立的源信号,使得这些分离出来的源信号之间尽可能独立。它在语音识别、电信和医学信号处理等信号处理方面有着广泛的应用,目前已成为盲信号处理,人工神经网络等研究领域中的一个研究热点。 本文简要的阐述了ICA的发展、应用和现状,详细地论述了ICA的原理及实现过程,系统地介绍了目前几种主要ICA算法以及它们之间的内在联系,在此基础上重点分析了一种快速ICA实现算法一FastICA。物质的非线性荧光谱信号可以看成是由多个相互独立的源信号组合成的混合信号,而这些独立的源信号可以看成是光谱的特征信号。为了更好的了解光谱信号的特征,本文利用独立分量分析的思想和方法,提出了利用FastICA算法提取光谱信号的特征的方案,并进行了详细的仿真实验。 此外,我们还进行了进一步的研究,探索了其他可能的ICA应用领域,如音乐信号处理、图像处理以及金融数据分析等。通过在这些领域中的实验和应用,我们发现ICA在提取信号特征、降噪和信号分离等方面具有广泛的潜力和应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值