SHARE
TWEET

Untitled

a guest Jan 11th, 2017 57 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public class ContactsListAdapter extends BaseAdapter{
  2.     private LayoutInflater inflater;
  3.     private ArrayList<ContactsListItems> mContactsList = new ArrayList<>();
  4.  
  5.     ContactsListAdapter(Context context, ArrayList<ContactsListItems> users){
  6.         mContactsList = users;
  7.         inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  8.     }
  9.     @Override
  10.     public int getCount() {
  11.         return mContactsList.size();
  12.     }
  13.  
  14.     @Override
  15.     public Object getItem(int i) {
  16.         return mContactsList.get(i);
  17.     }
  18.  
  19.     @Override
  20.     public long getItemId(int i) {
  21.         return i;
  22.     }
  23.  
  24.     @Override
  25.     public View getView(int i, View convertView, ViewGroup viewGroup) {
  26.         View view = convertView;
  27.         ViewHolder holder;
  28.         ContactsListItems user = getUser(i);
  29.  
  30.         if (view == null){
  31.             holder = new ViewHolder();
  32.             if (user.getUIN() == -9){
  33.                 view = inflater.inflate(R.layout.contacts_list_header, viewGroup, false);
  34.                 //((TextView)view.findViewById(R.id.twGroupName_header)).setText(user.getGroupName());
  35.                 holder.twGroupName_header = (TextView)view.findViewById(R.id.twGroupName_header);
  36.                 holder.twGroupName_header.setText(user.getGroupName());
  37.                 view.setTag(R.id.group_id_contacts_listview, -1);
  38.                 view.setTag(R.id.parent_group_id_contacts_lisview, user.getParentId());
  39.             }else {
  40.  
  41.                 if (!user.ismIsGroup()) {
  42.                     view = inflater.inflate(R.layout.item_people_in_contacts, viewGroup, false);
  43.                    // ((TextView) view.findViewById(R.id.twContactName)).setText(user.getDisplayName());
  44.                    // ((TextView) view.findViewById(R.id.twUIN)).setText("UIN:" + user.getUIN().toString());
  45.                     holder.twContactName = (TextView)view.findViewById(R.id.twContactName);
  46.                     holder.twContactName.setText(user.getDisplayName());
  47.                     holder.twUIN = (TextView)view.findViewById(R.id.twUIN);
  48.                     holder.twUIN.setText("UIN:" + user.getUIN().toString());
  49.                     view.setTag(R.id.group_id_contacts_listview, user.getGroupId());
  50.                 } else {
  51.                     view = inflater.inflate(R.layout.item_group_in_contacts, viewGroup, false);
  52.                     //((TextView) view.findViewById(R.id.twGroupName_contacts)).setText((user.getGroupName()));
  53.                     holder.twGroupName_contacts = (TextView)view.findViewById(R.id.twGroupName_contacts);
  54.                     holder.twGroupName_contacts.setText(user.getGroupName());
  55.                     view.setTag(R.id.group_id_contacts_listview, user.getGroupId());
  56.                 }
  57.             }
  58.             view.setTag(holder);
  59.         } else {
  60.             holder = (ViewHolder)view.getTag();
  61.         }
  62.         return view;
  63.     }
  64.  
  65.     private ContactsListItems getUser(int position) {
  66.         return ((ContactsListItems) getItem(position));
  67.     }
  68.     private static class ViewHolder{
  69.         TextView twContactName;
  70.         TextView twUIN;
  71.         TextView twGroupName_contacts;
  72.         TextView twGroupName_header;
  73.     }
  74. }
  75.    
  76. public class Contacts extends Fragment {
  77.  
  78.     public ContactsListAdapter adapter;
  79.     ArrayList<ContactsListItems> items = new ArrayList<>();
  80.     String CONTACTS_LIST = "contacts_list";
  81.     @Override
  82.     public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  83.  
  84.         final View view = inflater.inflate(R.layout.fragment_contacts, container, false);
  85.  
  86.         SharedPreferences spref = MainPage.contextOfApplication.getSharedPreferences(Consts.APP_PREFERENCES, MainPage.MODE_PRIVATE);
  87.         final String sData = spref.getString(CONTACTS_LIST, "");
  88.         ContactsListItems Item;
  89.         try {
  90.             JSONArray contactsListJson = new JSONArray(sData);
  91.                 for (int i=0; i<contactsListJson.length(); i++){
  92.                     JSONObject user = contactsListJson.getJSONObject(i);
  93.                     if (user.getBoolean("IsGroup") && user.getInt("ParentID") == 0) {
  94.                         Item = new ContactsListItems(user.getInt("UIN"),
  95.                                 user.getInt("Sex"),
  96.                                 user.getInt("ParentID"),
  97.                                 user.getInt("ID"),
  98.                                 user.getString("DisplayName"),
  99.                                 user.getString("GroupName"),
  100.                                 user.getBoolean("TeamLead"),
  101.                                 user.getBoolean("IsGroup"),
  102.                                 user.getInt("GroupID"));
  103.                         items.add(Item);
  104.                     }
  105.                 }
  106.  
  107.         }catch (JSONException e){
  108.         }
  109.         adapter = new ContactsListAdapter(getActivity(), items);
  110.         final ListView listView = (ListView)view.findViewById(R.id.lwContacts);
  111.         listView.setAdapter(adapter);
  112.  
  113.         listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  114.             @Override
  115.             public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
  116.                 Integer GroupId = (Integer) view.getTag(R.id.group_id_contacts_listview);
  117.                 Integer parentGroupId = (Integer) view.getTag(R.id.parent_group_id_contacts_lisview);
  118.                 ContactsListItems ItemsOnClick;
  119.                     ArrayList<ContactsListItems> itemsOnClick = new ArrayList<>();
  120.  
  121.                 //------------------------------Обработка нажатия на группу-------------------------------------
  122.                     if (GroupId > 0) {
  123.                         try {
  124.                             JSONArray contactsListJson = new JSONArray(sData);
  125.                             for (int j = 0; j < contactsListJson.length(); j++) {
  126.                                 JSONObject user = contactsListJson.getJSONObject(j);
  127.                                 if (user.getInt("GroupID") == GroupId){
  128.                                     ContactsListItems headerItem = new ContactsListItems(-9,0,user.getInt("ParentID"),0,"", user.getString("GroupName"), false, false, user.getInt("GroupID"));
  129.                                     itemsOnClick.add(headerItem);
  130.                                 }
  131.                                 if (user.getInt("ParentID") == GroupId) {
  132.                                     ItemsOnClick = new ContactsListItems(user.getInt("UIN"),
  133.                                                                          user.getInt("Sex"),
  134.                                                                          user.getInt("ParentID"),
  135.                                                                          user.getInt("ID"),
  136.                                                                          user.getString("DisplayName"),
  137.                                                                          user.getString("GroupName"),
  138.                                                                          user.getBoolean("TeamLead"),
  139.                                                                          user.getBoolean("IsGroup"),
  140.                                                                          user.getInt("GroupID"));
  141.                                     itemsOnClick.add(ItemsOnClick);
  142.  
  143.                                 }
  144.                             }
  145.  
  146.                         } catch (JSONException e) {
  147.                             e.printStackTrace();
  148.                         }
  149.  
  150.                         ContactsListAdapter onClickAdapter = new ContactsListAdapter(getActivity(), itemsOnClick);
  151.                         listView.setAdapter(onClickAdapter);
  152.                 //------------------------------Обработка нажатия на группу-------------------------------------
  153.  
  154.                     } else
  155.  
  156.                 //------------------------------Обработка нажатия на контакт-------------------------------------
  157.                         if (GroupId == 0){
  158.  
  159.                         Toast t = Toast.makeText(getActivity(), "Contact", Toast.LENGTH_SHORT);
  160.                         t.show();
  161.                 //------------------------------Обработка нажатия на контакт-------------------------------------
  162.  
  163.                     } else
  164.  
  165.                 //------------------------------Обработка нажатия на header--------------------------------------
  166.                         if (GroupId == -1){
  167.  
  168.                         ArrayList<ContactsListItems> itemsOnBackClick = new ArrayList<>();
  169.                         try {
  170.                             JSONArray backJson = new JSONArray(sData);
  171.                             ContactsListItems ItemsOnBackClick;
  172.                             for (int k=0; k<backJson.length(); k++){
  173.                                 JSONObject backUser = backJson.getJSONObject(k);
  174.  
  175.  
  176.                                 if ((backUser.getInt("GroupID") == parentGroupId) && parentGroupId != 0){
  177.                                     ContactsListItems headerItem = new ContactsListItems(-9,0,backUser.getInt("ParentID"),0,"", backUser.getString("GroupName"), false, false, backUser.getInt("GroupID"));
  178.                                     itemsOnBackClick.add(headerItem);
  179.                                 }
  180.                                 if (backUser.getInt("ParentID") == parentGroupId) {
  181.                                     ItemsOnBackClick = new ContactsListItems(backUser.getInt("UIN"),
  182.                                                                          backUser.getInt("Sex"),
  183.                                                                          backUser.getInt("ParentID"),
  184.                                                                          backUser.getInt("ID"),
  185.                                                                          backUser.getString("DisplayName"),
  186.                                                                          backUser.getString("GroupName"),
  187.                                                                          backUser.getBoolean("TeamLead"),
  188.                                                                          backUser.getBoolean("IsGroup"),
  189.                                                                          backUser.getInt("GroupID"));
  190.                                     itemsOnBackClick.add(ItemsOnBackClick);
  191.  
  192.                                 }
  193.                                 ContactsListAdapter onBackClickAdapter = new ContactsListAdapter(getActivity(), itemsOnBackClick);
  194.                                 listView.setAdapter(onBackClickAdapter);
  195.                             }
  196.  
  197.                         }catch (JSONException e){
  198.                             e.printStackTrace();
  199.                         }
  200.                     }
  201.                 //------------------------------Обработка нажатия на header--------------------------------------
  202.  
  203.                 }
  204.         });
  205.  
  206.         return view;
  207.     }
  208.  
  209. }
  210.    
  211. public View getView(int i, View convertView, ViewGroup viewGroup) {
  212.         View view = convertView;
  213.         ViewHolder holder;
  214.         ContactsListItems user = getUser(i);
  215.  
  216.         if (view == null){
  217.             holder = new ViewHolder();
  218.             if (user.getUIN() == -9){
  219.                 view = inflater.inflate(R.layout.contacts_list_header, viewGroup, false);
  220.                 holder.twGroupName_header = (TextView)view.findViewById(R.id.twGroupName_header);
  221.                 view.setTag(R.id.group_id_contacts_listview, -1);
  222.                 view.setTag(R.id.parent_group_id_contacts_lisview, user.getParentId());
  223.             }else {
  224.  
  225.                 if (!user.ismIsGroup()) {
  226.                     view = inflater.inflate(R.layout.item_people_in_contacts, viewGroup, false);
  227.                     holder.twContactName = (TextView)view.findViewById(R.id.twContactName);
  228.                     holder.twUIN = (TextView)view.findViewById(R.id.twUIN);
  229.                     view.setTag(R.id.group_id_contacts_listview, user.getGroupId());
  230.                 } else {
  231.                     view = inflater.inflate(R.layout.item_group_in_contacts, viewGroup, false);
  232.                     holder.twGroupName_contacts = (TextView)view.findViewById(R.id.twGroupName_contacts);
  233.                     view.setTag(R.id.group_id_contacts_listview, user.getGroupId());
  234.                 }
  235.             }
  236.             view.setTag(holder);
  237.         } else {
  238.             holder = (ViewHolder)view.getTag();
  239.         }
  240.  
  241.  
  242.            if (user.getUIN() == -9){
  243.                 holder.twGroupName_header.setText(user.getGroupName());
  244.             }else {
  245.                if (!user.ismIsGroup()) {
  246.                    holder.twContactName.setText(user.getDisplayName());
  247.                    holder.twUIN.setText("UIN:" + user.getUIN().toString());
  248.                } else {
  249.                    holder.twGroupName_contacts.setText(user.getGroupName());
  250.                }
  251.            }
  252.  
  253.         return view;
  254.     }
  255.    
  256. java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
  257.    
  258. public class ContactsListAdapter extends BaseAdapter{
  259.     private LayoutInflater inflater;
  260.     private ArrayList<ContactsListItems> mContactsList = new ArrayList<>();
  261.  
  262.     ContactsListAdapter(Context context, ArrayList<ContactsListItems> users){
  263.         mContactsList = users;
  264.         inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  265.     }
  266.  
  267.     @Override
  268.     public int getViewTypeCount() {
  269.         return 3;
  270.     }
  271.  
  272.     @Override
  273.     public int getItemViewType(int position) {
  274.         Integer flag = -1;
  275.         ContactsListItems user = getUser(position);
  276.             if (user.getUIN() == -9){
  277.             flag = 0;
  278.         }else {
  279.             if (!user.ismIsGroup()) {
  280.                 flag = 1;
  281.             } else {
  282.                 flag = 2;
  283.             }
  284.         }
  285.         return flag;
  286.     }
  287.  
  288.     @Override
  289.     public int getCount() {
  290.         return mContactsList.size();
  291.     }
  292.  
  293.     @Override
  294.     public Object getItem(int i) {
  295.         return mContactsList.get(i);
  296.     }
  297.  
  298.     @Override
  299.     public long getItemId(int i) {
  300.         return i;
  301.     }
  302.  
  303.     @Override
  304.     public View getView(int i, View convertView, ViewGroup viewGroup) {
  305.         View view = convertView;
  306.         ContactsListItems user = getUser(i);
  307.         Integer type = getItemViewType(i);
  308.  
  309.         switch (type){
  310.             case 0:{
  311.                 ViewHeaderHolder headerHolder;
  312.                 if (view == null){
  313.                     view = inflater.inflate(R.layout.contacts_list_header, viewGroup, false);
  314.                     headerHolder = new ViewHeaderHolder();
  315.                     headerHolder.twGroupName_header = (TextView)view.findViewById(R.id.twGroupName_header);
  316.                     view.setTag(R.id.group_id_contacts_listview, -1);
  317.                     view.setTag(R.id.parent_group_id_contacts_lisview, user.getParentId());
  318.                     view.setTag(R.id.holder_id0, headerHolder);
  319.                 }else{
  320.                     headerHolder = (ViewHeaderHolder)view.getTag(R.id.holder_id0);
  321.                 }
  322.                 if (headerHolder.twGroupName_header != null) {
  323.                     headerHolder.twGroupName_header.setText(user.getGroupName());
  324.                 }
  325.                 return view;
  326.             }
  327.             case 1:{
  328.                 ViewContactHolder contactHolder;
  329.                 if (view == null){
  330.                     view = inflater.inflate(R.layout.item_people_in_contacts, viewGroup, false);
  331.                     contactHolder = new ViewContactHolder();
  332.                     contactHolder.twContactName = (TextView)view.findViewById(R.id.twContactName);
  333.                     contactHolder.twUIN = (TextView)view.findViewById(R.id.twUIN);
  334.                     view.setTag(R.id.group_id_contacts_listview, user.getGroupId());
  335.                     view.setTag(R.id.holder_id1, contactHolder);
  336.                 }else{
  337.                     contactHolder = (ViewContactHolder)view.getTag(R.id.holder_id1);
  338.                 }
  339.                 if (contactHolder.twContactName != null) {
  340.                     contactHolder.twContactName.setText(user.getDisplayName());
  341.                     contactHolder.twUIN.setText("UIN:" + user.getUIN().toString());
  342.                 }
  343.  
  344.                 return view;
  345.             }
  346.             case 2:{
  347.                 ViewContactNameHolder contactNameHolder;
  348.                 if (view == null){
  349.                     view = inflater.inflate(R.layout.item_group_in_contacts, viewGroup, false);
  350.                     contactNameHolder = new ViewContactNameHolder();
  351.                     contactNameHolder.twGroupName_contacts = (TextView)view.findViewById(R.id.twGroupName_contacts);
  352.                     view.setTag(R.id.group_id_contacts_listview, user.getGroupId());
  353.                     view.setTag(R.id.holder_id2, contactNameHolder);
  354.                 }else{
  355.                     contactNameHolder = (ViewContactNameHolder)view.getTag(R.id.holder_id2);
  356.                 }
  357.                 if (contactNameHolder.twGroupName_contacts != null) {
  358.                     contactNameHolder.twGroupName_contacts.setText(user.getGroupName());
  359.                 }
  360.                 return view;
  361.             }
  362.         }
  363.  
  364.  
  365.  
  366.         return view;
  367.     }
  368.  
  369.     private ContactsListItems getUser(int position) {
  370.         return ((ContactsListItems) getItem(position));
  371.     }
  372.     private static class ViewContactNameHolder{
  373.         TextView twGroupName_contacts;
  374.     }
  375.     private static class ViewContactHolder{
  376.         TextView twContactName;
  377.         TextView twUIN;
  378.     }
  379.     private static class ViewHeaderHolder{
  380.         TextView twGroupName_header;
  381.     }
  382. }
RAW Paste Data
Top