2

다른보기에 대해 공통 어댑터를 쓸 수 있습니까? 나는 recyclerViewspinner에 대한 공통의 어댑터에 관심이있다. 내 프로젝트에서 나는 RecyclerView과 Spinner가 있고 기본 generic 어댑터를 쓰고 싶다. (RecyclerViewSpinner) 도와 주시겠습니까?회 전자 및 리사이클 뷰에 대한 일반 어댑터 ​​

답변

6

예, 당신이, 당신은 동일한 어댑터를 사용하는 것이 훨씬 더를 그 일에 대한 기본 개념을 genirify 수있다 ListView/SpinnerRecyclerView

public static class CommonAdapter extends RecyclerView.Adapter<CommonAdapter.RecycleViewHolder> 
      implements ListAdapter { 


     private Context mContext; 
     private List<String> data; 

     public CommonAdapter(Context context, List<String> data) { 
      mContext = context; 
      this.data = data; 
     } 

     // Start of recycleview adapter 
     @Override 
     public RecycleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
      return new RecycleViewHolder(new TextView(mContext)); 
     } 

     @Override 
     public void onBindViewHolder(RecycleViewHolder holder, int position) { 
      holder.textView.setText(data.get(position)); 
     } 

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

     public static class RecycleViewHolder extends RecyclerView.ViewHolder { 

      public TextView textView; 

      public RecycleViewHolder(View itemView) { 
       super(itemView); 
       textView = (TextView) itemView; 
      } 
     } 

     // Implementation of list adapter(Spinner/ListView) 
     @Override 
     public boolean areAllItemsEnabled() { 
      return true; 
     } 

     @Override 
     public boolean isEnabled(int position) { 
      return true; 
     } 

     @Override 
     public void registerDataSetObserver(DataSetObserver observer) { 

     } 

     @Override 
     public void unregisterDataSetObserver(DataSetObserver observer) { 

     } 

     @Override 
     public int getCount() { 
      return data.size(); 
     } 

     @Override 
     public String getItem(int position) { 
      return data.get(position); 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      SpinnerViewHolder holder; 
      if (convertView == null) { 
       convertView = new TextView(mContext); 
       holder = new SpinnerViewHolder(); 
       holder.textView = (TextView) convertView; 
       convertView.setTag(holder); 
      } else { 
       holder = (SpinnerViewHolder) convertView.getTag(); 
      } 
      holder.textView.setText(getItem(position)); 
      return convertView; 
     } 

     @Override 
     public int getViewTypeCount() { 
      return 0; 
     } 

     @Override 
     public boolean isEmpty() { 
      return false; 
     } 

     public static class SpinnerViewHolder { 
      public TextView textView; 
     } 

    } 

위한 공통 어댑터를 구현할 수있는 모든 다른 ListView/RecyclerView과 다른 데이터 유형도 있습니다. 하지만 지금부터는 결합 된 어댑터에 대한 기본 아이디어를 제공하고 있습니다.

어댑터는 RecyclerView에서 요구하는 RecyclerView.ViewHolder을 확장하고 나는 ListView/Spinner에 필요한 ListAdapter에 동일한 클래스를 구현하고있다.

+0

대단한! 고맙습니다 – Sky

관련 문제