Advertisement
Guest User

Untitled

a guest
Jan 11th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.35 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement