2017-12-10 15 views
-1

안녕하세요, 내 recycleview clickable을 설정하고 싶습니다. 예를 들어 recycleview의 각보기를 클릭하면 해당 이름과 같은 매개 변수가 토스트됩니다. 부정적 순위를 매기 지마. 난 초보자 야.각보기를 recycleview에 onclick하고 해당 매개 변수를 토스트

이 내 mainclass는 recycleview에게

public class HomeFragment2 extends Fragment { 

    List<GetDataAdapter> GetDataAdapter1; 

    RecyclerView recyclerView; 

    RecyclerView.LayoutManager recyclerViewlayoutManager; 

    RecyclerView.Adapter recyclerViewadapter; 


    ProgressBar progressBar; 

    View view ; 

    int RecyclerViewItemPosition ; 

    ArrayList<String> ImageTitleNameArrayListForClick; 


    String ID = "id"; 
    String SECTION = "section"; 
    String TIME = "time"; 
    String NAME = "name"; 

    Button button; 

    JsonArrayRequest jsonArrayRequest ; 

    RequestQueue requestQueue ; 


    public static HomeFragment2 newInstance() { 
     return new HomeFragment2(); 
    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 

     View v = inflater.inflate(R.layout.fragment_home2, container, false); 

     GetDataAdapter1 = new ArrayList<>(); 

     recyclerView =v.findViewById(R.id.recyclerView1); 

     progressBar =v.findViewById(R.id.progressBar1); 

     button =v.findViewById(R.id.button); 

     recyclerView.setHasFixedSize(true); 

     recyclerViewlayoutManager = new LinearLayoutManager(getActivity()); 

     recyclerView.setLayoutManager(recyclerViewlayoutManager); 


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

       progressBar.setVisibility(View.VISIBLE); 
       JSON_DATA_WEB_CALL(); 

      } 
     }); 


     return v; 
    } 
    public void JSON_DATA_WEB_CALL(){ 

     jsonArrayRequest = new JsonArrayRequest(URLS.recycle_fetch, 

       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 

         progressBar.setVisibility(View.GONE); 

         JSON_PARSE_DATA_AFTER_WEBCALL(response); 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 

        } 
       }); 

     requestQueue = Volley.newRequestQueue(getActivity()); 

     requestQueue.add(jsonArrayRequest); 
    } 

    public void JSON_PARSE_DATA_AFTER_WEBCALL(JSONArray array){ 

     for(int i = 0; i<array.length(); i++) { 

      GetDataAdapter GetDataAdapter2 = new GetDataAdapter(); 

      JSONObject json = null; 
      try { 
       json = array.getJSONObject(i); 

       GetDataAdapter2.setId(json.getInt(ID)); 

       GetDataAdapter2.setName(json.getString(SECTION)); 

       GetDataAdapter2.setSubject(json.getString(TIME)); 

       GetDataAdapter2.setPhone_number(json.getString(NAME)); 

       // Adding image title name in array to display on RecyclerView click event. 

      } catch (JSONException e) { 

       e.printStackTrace(); 
      } 
      GetDataAdapter1.add(GetDataAdapter2); 
     } 

     recyclerViewadapter = new RecyclerViewAdapter(GetDataAdapter1, getActivity()); 

     recyclerView.setAdapter(recyclerViewadapter); 
    } 
} 

내 어댑터를 보여주는 것입니다

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> { 

Context context; 

List<GetDataAdapter> getDataAdapter; 

public RecyclerViewAdapter(List<GetDataAdapter> getDataAdapter, Context context){ 

    super(); 

    this.getDataAdapter = getDataAdapter; 
    this.context = context; 
} 

@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview, parent, false); 


    cardView = (CardView) view.findViewById(R.id.mainCard); 



    ViewHolder viewHolder = new ViewHolder(v); 


    return viewHolder; 
} 

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 

    GetDataAdapter getDataAdapter1 = getDataAdapter.get(position); 

    holder.Id.setText(getDataAdapter1.getName()); 

    holder.Section.setText(String.valueOf(getDataAdapter1.getId())); 

    holder.Time.setText(getDataAdapter1.getPhone_number()); 

    holder.Name.setText(getDataAdapter1.getSubject()); 
    cardView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //do something 
     } 
    }); 

} 

@Override 
public int getItemCount() { 

    return getDataAdapter.size(); 
} 

class ViewHolder extends RecyclerView.ViewHolder{ 

    public TextView Id; 
    public TextView Section; 
    public TextView Time; 
    public TextView Name; 


    public ViewHolder(View itemView) { 

     super(itemView); 

     Id =itemView.findViewById(R.id.textView2); 
     Section =itemView.findViewById(R.id.textView4); 
     Time =itemView.findViewById(R.id.textView6); 
     Name =itemView.findViewById(R.id.textView8); 


    } 
} 
} 

어떤 몸이 나를 도울 수 있습니까? 나는 그들 각각을 클릭 할 때 cardview의 매개 변수를 얻고 싶다.

+0

답변은 [here.] (https://stackoverflow.com/questions/24471109/recyclerview-onclick) 인터페이스를 추가해야합니다. – salman

답변

0
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> { 

    Context context; 

    List<GetDataAdapter> getDataAdapter; 

    public RecyclerViewAdapter(List<GetDataAdapter> getDataAdapter, Context context){ 

     super(); 

     this.getDataAdapter = getDataAdapter; 
     this.context = context; 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

     View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview, parent, false); 




//////////////////////////////////here you define your layout you wanna be clicked///////////////////////// 

cardView = (CardView) view.findViewById(R.id.mainCard); 








     ViewHolder viewHolder = new ViewHolder(v); 


     return viewHolder; 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder holder, int position) { 

     GetDataAdapter getDataAdapter1 = getDataAdapter.get(position); 

     holder.Id.setText(getDataAdapter1.getName()); 

     holder.Section.setText(String.valueOf(getDataAdapter1.getId())); 

     holder.Time.setText(getDataAdapter1.getPhone_number()); 

     holder.Name.setText(getDataAdapter1.getSubject()); 



///////////////////////////////// and here you add your on click listener//////////////////////////////// 

cardView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //do something 
      } 
     }); 







    } 

    @Override 
    public int getItemCount() { 

     return getDataAdapter.size(); 
    } 

    class ViewHolder extends RecyclerView.ViewHolder{ 

     public TextView Id; 
     public TextView Section; 
     public TextView Time; 
     public TextView Name; 


     public ViewHolder(View itemView) { 

      super(itemView); 

      Id =itemView.findViewById(R.id.textView2); 
      Section =itemView.findViewById(R.id.textView4); 
      Time =itemView.findViewById(R.id.textView6); 
      Name =itemView.findViewById(R.id.textView8); 


     } 
    } 
    } 
+0

내 어댑터 코드를 넣습니다. 더 설명하고 내 어댑터에 표시 할 수 있습니까? 제발? : – ALI

+0

내 대답을 편집했는지 확인하십시오. –

+0

onclick 메서드가 올바르게 실행됩니다.하지만 뷰의 현재 매개 변수를 가져 오는 방법은 무엇입니까? – ALI