2017-02-22 23 views
-2

私はアンドロイドで全く新しいです。私は正しい質問をしているかどうか分からない!recyclerviewのインテントを使用して新しいアクティビティを開始

私は新しいアクティビティを開いていますが、問題があります。新しいアクティビティを開くためにクリックすると、毎回同じアクティビティが開きます。

import android.content.Context; 
import android.content.Intent; 
import android.content.res.Resources; 
import android.content.res.TypedArray; 
import android.graphics.drawable.Drawable; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v7.widget.LinearLayoutManager; 
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; 

public class Tab1Cours extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     RecyclerView recyclerView = (RecyclerView) inflater.inflate(
       R.layout.recycler_view, container, false); 
     ContentAdapter adapter = new ContentAdapter(recyclerView.getContext()); 
     recyclerView.setAdapter(adapter); 
     recyclerView.setHasFixedSize(true); 
     recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 

     return recyclerView; 

    } 

    public static class ViewHolder extends RecyclerView.ViewHolder { 
     public ImageView avator; 
     public TextView name; 
     public TextView description; 
     private Context context; 



     public ViewHolder(LayoutInflater inflater, ViewGroup parent) { 
      super(inflater.inflate(R.layout.tab1cours, parent, false)); 

      context = itemView.getContext(); 

      avator = (ImageView) itemView.findViewById(R.id.imageView); 
      name = (TextView) itemView.findViewById(R.id.title); 
      description = (TextView) itemView.findViewById(R.id.dis); 

      itemView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        final Intent intent; 
        switch (getAdapterPostion()){ 
         case 0: 
          intent = new Intent(context, Tab1Semester1.class); 
          break; 

         case 1: 
          intent = new Intent(context, Tab1Semester2.class); 

          break; 

         case 2: 
          intent = new Intent(context, Tab1Semester3.class); 
          break; 

         case 3: 
          intent = new Intent(context, Tab1Semester4.class); 
          break; 

         case 4: 
          intent = new Intent(context, Tab1Semester5E.class); 
          break; 

         case 5: 
          intent = new Intent(context, Tab1Semester5G.class); 
          break; 

         case 6: 
          intent = new Intent(context, Tab1Semester6E.class); 
          break; 

         default: 
          intent = new Intent(context, Tab1Semester6G.class); 
          break; 

        } 
        context.startActivity(intent); 

       } 
      }); 
     } 

     private int getAdapterPostion() { 
      return 0; 
     } 
    } 

    public static class ContentAdapter extends RecyclerView.Adapter<ViewHolder> { 
     // Set numbers of List in RecyclerView. 
     private static final int LENGTH = 8; 

     private final String[] mPlaces; 
     private final String[] mPlaceDesc; 
     private final Drawable[] mPlaceAvators; 

     public ContentAdapter(Context context) { 
      Resources resources = context.getResources(); 
      mPlaces = resources.getStringArray(R.array.places); 
      mPlaceDesc = resources.getStringArray(R.array.place_desc); 
      TypedArray a = resources.obtainTypedArray(R.array.place_avator); 
      mPlaceAvators = new Drawable[a.length()]; 
      for (int i = 0; i < mPlaceAvators.length; i++) { 
       mPlaceAvators[i] = a.getDrawable(i); 
      } 
      a.recycle(); 
     } 
     @Override 
     public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
      return new ViewHolder(LayoutInflater.from(parent.getContext()), parent); 
     } 

     @Override 
     public void onBindViewHolder(ViewHolder holder, int position) { 
      holder.avator.setImageDrawable(mPlaceAvators[position % mPlaceAvators.length]); 
      holder.name.setText(mPlaces[position % mPlaces.length]); 
      holder.description.setText(mPlaceDesc[position % mPlaceDesc.length]); 
     } 

     @Override 
     public int getItemCount() { 
      return LENGTH; 
     } 
    }} 

私の代わりにコンストラクタのごonBindViewHolder方法でonClickListener設定し

答えて

0

を助けてください。起動する権利活動であるかを識別するために 使用位置:

public void onBindViewHolder(final ViewHolder holder, int position) { // get clickable view with your holder // use case switch to launch different activities based on the position of the onBindViewHolder method }

+0

私はコード内の新たなんだ、私はそれを行う方法がわかりませんか?してください、コードを書くことができますか? –

+0

私はあなたのlayout.xmlを所有していないので、コードを書くことができません。レイアウトのコンテナにIDを割り当て、クリックリスナーを割り当てます –

+0

私はあなたにプロジェクトのソースコードを送信して見せますか? –

関連する問題