2016-09-26 7 views
0

私はlistviewを使用しており、データを解析して表示しています。filterNameを同じURLからlistviewに追加します。いずれもadvance.followingでthat.Thanksを達成する方法を教えてもらえます私のアダプタクラスであるjsonを使用してListviewにヘッダを追加するには

アダプタ

public class MyCustomAdapter extends ArrayAdapter<ModelUser>{ 
     private List<ModelUser> modelUsers; 
     private Context context; 
     private PrefsManager prefsManager; 
     private ArrayList<ModelUser> modelUserArrayList; 

     public static final int TYPE_ODD = 0; 
     public static final int TYPE_EVEN = 1; 

     public MyCustomAdapter(Context context, List<ModelUser> products) { 
      super(context,R.layout.country_info, products); 
      this.context = context; 
      this.modelUsers = products; 
      prefsManager = new PrefsManager(); 

      modelUserArrayList = new ArrayList<>(); 
      modelUserArrayList = prefsManager.getFavorites(context); 
     } 


     private class ViewHolder { 
      CheckBox userName; 
      public TextView tv,tvs; 
     } 

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


     @Override 
     public int getViewTypeCount() { 
      return 2; 
     } 
     @Override 
     public int getItemViewType(int position) { 
      return modelUsers.get(position).getId(); 
     } 



     @Override 
     public long getItemId(int i) { 
      return i; 
     } 

     @Override 
     public View getView(final int i, View convertView, ViewGroup viewGroup) { 

      ViewHolder holder = null; 

      final ModelUser modelUser = modelUsers.get(i); 
      int listViewItemType = getItemViewType(i); 
      if(convertView == null) { 
       LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 

       if (listViewItemType == TYPE_EVEN) { 
        convertView = inflater.inflate(R.layout.list_item_enty, null); 
       } else if (listViewItemType == TYPE_ODD) { 
        convertView = inflater.inflate(R.layout.country_info, null); 
       } 

       holder = new ViewHolder(); 

       holder.userName = (CheckBox) convertView.findViewById(R.id.chkSelected); 
       holder.tv = (TextView) convertView.findViewById(R.id.tvName); 
       holder.tvs = (TextView) convertView.findViewById(R.id.list_item_entry_title); 

       convertView.setTag(holder); 
      }else{ 
       holder = (ViewHolder)convertView.getTag(); 
      } 


      if(listViewItemType==TYPE_EVEN) 
      { 
       holder.tvs.setText(modelUser.getTmpid()); 
      } 
      else if(listViewItemType == TYPE_ODD) 
      { 
       holder.tv.setText(modelUser.getUserName()); 


       if (checkFavoriteItem(modelUser)) { 

        holder.userName.setSelected(modelUser.isSelected()); 
        holder.userName.setChecked(true); 
        Log.d("TAG ","Is Selected "+i+" "+modelUser.isSelected()); 
       } 
       else 
       { 
        holder.userName.setChecked(false); 
        holder.userName.setSelected(modelUser.isSelected()); 
        Log.d("TAG ","Is Not Selected "+i +modelUser.isSelected()); 
       } 



       holder.userName.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
        @Override 
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 

         final boolean isChecked = compoundButton.isChecked(); 
         // Log.d("TAG", "Position is Selected " + i + isChecked); 

         if(isChecked){ 
          prefsManager.addFavorite(context, modelUser); 
          modelUser.setSelected(true); 
          Log.d("TAG", "Position is Selected " + i + isChecked); 

         } 
         else 
         { 

          prefsManager.removeFavorite(context, modelUser); 
          modelUser.setSelected(false); 
          Log.d("TAG", "Position is unchecked " + i + isChecked); 

         } 
        } 
       }); 
      } 


      return convertView; 
     } 

     public List<ModelUser> getStudentist() { 


      return modelUsers; 
     } 

     public boolean checkFavoriteItem(ModelUser checkProduct) { 
      boolean check = false; 
      List<ModelUser> favorites = prefsManager.getFavorites(context); 
      if (favorites != null) { 
       for (ModelUser product : favorites) { 
        if (product.equals(checkProduct)) { 
         check = true; 
         break; 
        } 
       } 
      } 
      return check; 
     } 

     public void add(ModelUser product) { 
      super.add(product); 
      modelUsers.add(product); 
      notifyDataSetChanged(); 
     } 

     public void remove(ModelUser product) { 
      super.remove(product); 
      modelUsers.remove(product); 
      notifyDataSetChanged(); 
     } 



    } 
+0

あなたはそのためにexpandableListViewを使用する必要があります –

+0

"headed ListView"のようなものはありますか? –

+0

@ Code-Apprenticeあなたが助けることができます – albert

答えて

2

これらはsectionsと呼ばれ、入手可能な例の千がすでに存在しています。 一例:http://stacktips.com/tutorials/android/listview-with-section-header-in-android詳細に説明されている。

+0

http://sunil-android.blogspot.in/2013/08/section-header-listview-in-android.htmlこの1つは働いてくれてありがとう – albert

+0

私は1つのエラーが発生しています – albert

+0

エラーは何ですか? –

関連する問題