2017-01-20 5 views
0

は明らかに簡単な作業持っている -オープンの新しい活動が

表示リサイクラービューを使用したアイテムのリストを、各項目の詳細を示して開く必要があります任意の項目新しい画面のカードview.Onをクリックする必要がありますその項目の

私はすでに同じトピックに投稿されているさまざまな質問を見てきました。私はかなり新しく、実装する方法を正確に理解することができないので、私はそこにリダイレクトするのではなく、これらanswers.Iは密接チュートリアルに従うことを試みたが、明らかresults.HEREを複製に失敗している見てFILES

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

    } 


    } 
ARE

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(インタフェース)

`import android.view.View; 

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

    public interface ItemClickListner { 
     void onItemClick(View v, int position); 
    }` 

目標は、携帯電話の配列から各リスト項目をクリックして、私の後に新しいテキストフィールドに新しい活動に

答えて

2

をOSをリストアクティビティを取得することです。 putExtra(「OSのNAMEあなたが行ったように.... は茶の順に、

c.startActivity(c,DetailActivity.class); 
0
//set on item click listener like this 

mRecyclerView.addOnItemTouchListener(new RecyclerItemClickListener(this, new RecyclerItemClickListener.OnItemClickListener() { 
      @Override 
      public void onItemClick(View view, int position) { 
       Toast.makeText(MainActivity.this, "Card at " + position + " is clicked", Toast.LENGTH_SHORT).show(); 

// here you can start your detail Activity 
Intent i=new Intent(c,DetailActivity.class); 
     i.putExtra("OS name",OperatingSystem[position]); 
c.startActivity(i); 


      } 
     })); 

// here is the on item click listener class 

public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener { 
    private OnItemClickListener mListener; 
    GestureDetector mGestureDetector; 


    public interface OnItemClickListener{ 
     public void onItemClick(View view, int position); 
    } 


    public RecyclerItemClickListener(Context context, OnItemClickListener listener) { 
     mListener = listener; 
     mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { 
      @Override public boolean onSingleTapUp(MotionEvent e) { 
       return true; 
      } 
     }); 
    } 

    @Override 
    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) { 
     View childView = rv.findChildViewUnder(e.getX(),e.getY()); 
     if(childView != null && mListener != null && mGestureDetector.onTouchEvent(e)){ 
      mListener.onItemClick(childView, rv.getChildAdapterPosition(childView)); 
      return true; 
     } 
     return false; 
    } 

    @Override 
    public void onTouchEvent(RecyclerView rv, MotionEvent e) { 

    } 

    @Override`enter code here` 
    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { 

    } 
+0

正確な解決策ではない提案のサンプルコード、OperatingSystem []を外側から渡すことができます – 44kksharma

0

この行を追加します。小さいとすると、これを試してください:

holder.PhoneModel.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent i=new Intent(c,DetailActivity.class); 
     i.putExtra("OS name",OperatingSystem[holder.getAdapterPosition()]); 
    } 
}); 

ホルダーは常にあなたの位置を保持します。

関連する問題