java - 从 Recyclerview 打开包含卡片的新 Activity

标签 java android android-recyclerview android-cardview

有一个看似简单的任务 -

使用回收器 View 显示项目列表,每个项目都应为卡片 View 。单击任何项​​目时,应打开新屏幕,其中显示该项目的详细信息。

我已经看到了关于同一主题的各种问题,我希望能对我所做的尝试提供一些帮助,而不是将我重定向到那里,因为我很新,无法理解如何准确地实现通过查看这些答案。我尝试严格遵循教程,但显然无法复制结果。文件如下

MainActivity.java

. package com.example.hardikvats.recylerviewdemo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    private String[] phones={"MotoX","Nokia Asha","Lumia 710","Iphone 7s"};
    private String[] OperatingSytem={"Android","Symbian","Windows","Ios"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        RecyclerView recyclerView= (RecyclerView) findViewById(R.id.recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        MyAdapter adapter=new MyAdapter(this,phones);
        recyclerView.setAdapter(adapter);

    }


    }

MyAdapter.java

import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
 * Created by Hardik Vats on 20-Jan-17.
 */

public class MyAdapter extends RecyclerView.Adapter<MyHolder> {
    Context c;
    String[] phones;
    String[] OperatingSystem;
    //CONSTRUCTOR
    public MyAdapter(Context c, String[] PhoneModel){
        this.c=c;
        this.phones=PhoneModel;
        //this.OperatingSystem=OperatingSystem;
    }
    @Override
    public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //INFLATING FROM XML TO JAVA VIEW
        View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.model,null);

        MyHolder holder=new MyHolder(v);
        return holder;
    }

    @Override
    public void onBindViewHolder(MyHolder holder, int position) {
holder.PhoneModel.setText(phones[position]);
holder.setItemClickListner(new ItemClickListner() {
    @Override
    public void onItemClick(View v, int position) {
        Intent i=new Intent(c,DetailActivity.class);
        i.putExtra("OS name",OperatingSystem[position]);
    }
});
    }

    @Override
    public int getItemCount() {
        return phones.length;
    }

}

MyHolder.java

   import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;

/**
 * Created by Hardik Vats on 20-Jan-17.
 */

public class MyHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
    TextView PhoneModel;
     ItemClickListner icl;
    public MyHolder(View itemView) {
        super(itemView);
        PhoneModel=(TextView) itemView.findViewById(R.id.MobilePhone);
itemView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
this.icl.onItemClick(v,getLayoutPosition());
    }
public void setItemClickListner(ItemClickListner itemClickListner){
        this.icl=itemClickListner;
    }
}

DetailActivity.java

     import android.content.Intent;
    
    import android.os.Bundle;
    
    import android.support.v7.app.AppCompatActivity;
    
    import android.widget.TextView;
    public class DetailActivity extends AppCompatActivity {
        TextView OperatingSystem;
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_detail2);
            Intent i=getIntent();
            final String OperatingSystem =i.getExtras().getString("Operating System");
    
    
        }
    }

ItemClickListner.java(Interface)

`import android.view.View;
    
    /**
     * Created by Hardik Vats on 20-Jan-17.
     */
    
    public interface ItemClickListner {
        void onItemClick(View v, int position);
    }`

目标是单击电话数组中的每个列表项,并获取在新文本字段中的新 Activity 中列出操作系统的 Activity

最佳答案

在 i.putExtra("操作系统名称 .... 添加这一行

c.startActivity(c,DetailActivity.class);

关于java - 从 Recyclerview 打开包含卡片的新 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41772857/

相关文章:

java - 为什么逆整数(Leet Code)的解法是 O((log10(n))?

android - 如何在滑动刷新android中刷新布局

java - 如何停止 RecyclerView 适配器内的快照监听器?

java - 我正在开发 servlet,只有一种 deGet 和 DoPost 方法。我在那里写了一种新方法。 。我如何直接访问该新方法?

android - 2 列布局

android - 正在调用错误 Activity 中的 onActivityResult

java - 如何使用 arraylist 制作可扩展列表?

android - 需要一个关于 RecyclerView.Adapter.notifyItemChanged(int position, Object payload) 的例子

java - java 中的 session - 有什么最佳实践吗?

Android:使用 Picasso 在 horizo​​ntalscrollview 中延迟加载图像