Guest User

Untitled

a guest
Jan 22nd, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.52 KB | None | 0 0
  1. public class MainActivity extends Activity implements SearchView.OnQueryTextListener,SearchView.OnCloseListener {
  2.  
  3. private ListView listView;
  4. private SearchView search;
  5. EfficientAdapter objectAdapter;
  6. EfficientAdapter2 objectAdapter1;
  7. int textlength=0;
  8. private CheckBox checkStat, checkRoutine, checkTat;
  9. private GestureDetector mGestureDetector;
  10.  
  11. // x and y coordinates within our side index
  12. private static float sideIndexX;
  13. private static float sideIndexY;
  14.  
  15. // height of side index
  16. private int sideIndexHeight;
  17.  
  18. // number of items in the side index
  19. private int indexListSize;
  20.  
  21. // list with items for side index
  22. private ArrayList<Object[]> indexList = null;
  23.  
  24.  
  25. @Override
  26. public void onCreate(Bundle savedInstanceState) {
  27. super.onCreate(savedInstanceState);
  28. setContentView(R.layout.homempleb);
  29. Log.i("scan"," txtScanResult ");
  30.  
  31. Arrays.sort(CountriesList.name);
  32. ActionItem nextItem = new ActionItem();
  33. final QuickAction quickAction = new QuickAction(this, QuickAction.VERTICAL);
  34. quickAction.addActionItem(nextItem);
  35. quickAction.setOnDismissListener(new QuickAction.OnDismissListener() {
  36. @Override
  37. public void onDismiss() {
  38. Toast.makeText(getApplicationContext(), "Dismissed", Toast.LENGTH_SHORT).show();
  39. }
  40. });
  41.  
  42.  
  43. listView = (ListView) findViewById(R.id.homelistView);
  44. listView.setTextFilterEnabled(true);
  45. objectAdapter = new EfficientAdapter(this);
  46. mGestureDetector = new GestureDetector(this, new SideIndexGestureListener());
  47. listView.setAdapter(objectAdapter);
  48.  
  49.  
  50. }
  51. @Override
  52. public boolean onTouchEvent(MotionEvent event)
  53. {
  54. if (mGestureDetector.onTouchEvent(event))
  55. {
  56. return true;
  57. } else
  58. {
  59. return false;
  60. }
  61. }
  62.  
  63. private ArrayList<Object[]> createIndex(String[] strArr)
  64. {
  65. ArrayList<Object[]> tmpIndexList = new ArrayList<Object[]>();
  66. Object[] tmpIndexItem = null;
  67.  
  68. int tmpPos = 0;
  69. String tmpLetter = "";
  70. String currentLetter = null;
  71. String strItem = null;
  72.  
  73. for (int j = 0; j < strArr.length; j++)
  74. {
  75. strItem = strArr[j];
  76. currentLetter = strItem.substring(0, 1);
  77.  
  78. // every time new letters comes
  79. // save it to index list
  80. if (!currentLetter.equals(tmpLetter))
  81. {
  82. tmpIndexItem = new Object[3];
  83. tmpIndexItem[0] = tmpLetter;
  84. tmpIndexItem[1] = tmpPos - 1;
  85. tmpIndexItem[2] = j - 1;
  86.  
  87. tmpLetter = currentLetter;
  88. tmpPos = j + 1;
  89.  
  90. tmpIndexList.add(tmpIndexItem);
  91. }
  92. }
  93.  
  94. // save also last letter
  95. tmpIndexItem = new Object[3];
  96. tmpIndexItem[0] = tmpLetter;
  97. tmpIndexItem[1] = tmpPos - 1;
  98. tmpIndexItem[2] = strArr.length - 1;
  99. tmpIndexList.add(tmpIndexItem);
  100.  
  101. // and remove first temporary empty entry
  102. if (tmpIndexList != null && tmpIndexList.size() > 0)
  103. {
  104. tmpIndexList.remove(0);
  105. }
  106.  
  107. return tmpIndexList;
  108. }
  109. @Override
  110. public void onWindowFocusChanged(boolean hasFocus)
  111. {
  112. super.onWindowFocusChanged(hasFocus);
  113.  
  114. final ListView listView = (ListView) findViewById(R.id.homelistView);
  115. LinearLayout sideIndex = (LinearLayout) findViewById(R.id.sideIndex);
  116. sideIndexHeight = sideIndex.getHeight();
  117. sideIndex.removeAllViews();
  118.  
  119. // TextView for every visible item
  120. TextView tmpTV = null;
  121.  
  122. // we'll create the index list
  123. indexList = createIndex(CountriesList.name);
  124.  
  125. // number of items in the index List
  126. indexListSize = indexList.size();
  127.  
  128. // maximal number of item, which could be displayed
  129. int indexMaxSize = (int) Math.floor(sideIndex.getHeight() / 20);
  130.  
  131. int tmpIndexListSize = indexListSize;
  132.  
  133. // handling that case when indexListSize > indexMaxSize
  134. while (tmpIndexListSize > indexMaxSize)
  135. {
  136. tmpIndexListSize = tmpIndexListSize / 2;
  137. }
  138.  
  139. // computing delta (only a part of items will be displayed to save a
  140. // place)
  141. double delta = indexListSize / tmpIndexListSize;
  142.  
  143. String tmpLetter = null;
  144. Object[] tmpIndexItem = null;
  145.  
  146. // show every m-th letter
  147. for (double i = 1; i <= indexListSize; i = i + delta)
  148. {
  149. tmpIndexItem = indexList.get((int) i - 1);
  150. tmpLetter = tmpIndexItem[0].toString();
  151. tmpTV = new TextView(this);
  152. tmpTV.setText(tmpLetter);
  153. tmpTV.setGravity(Gravity.CENTER);
  154. tmpTV.setTextSize(20);
  155. LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1);
  156. tmpTV.setLayoutParams(params);
  157. sideIndex.addView(tmpTV);
  158. }
  159.  
  160. // and set a touch listener for it
  161. sideIndex.setOnTouchListener(new OnTouchListener()
  162. {
  163. @Override
  164. public boolean onTouch(View v, MotionEvent event)
  165. {
  166. // now you know coordinates of touch
  167. sideIndexX = event.getX();
  168. sideIndexY = event.getY();
  169.  
  170. // and can display a proper item it country list
  171. displayListItem();
  172.  
  173. return false;
  174. }
  175. });
  176. }
  177.  
  178. class SideIndexGestureListener extends
  179. GestureDetector.SimpleOnGestureListener
  180. {
  181. @Override
  182. public boolean onScroll(MotionEvent e1, MotionEvent e2,
  183. float distanceX, float distanceY)
  184. {
  185. // we know already coordinates of first touch
  186. // we know as well a scroll distance
  187. sideIndexX = sideIndexX - distanceX;
  188. sideIndexY = sideIndexY - distanceY;
  189.  
  190. // when the user scrolls within our side index
  191. // we can show for every position in it a proper
  192. // item in the country list
  193. if (sideIndexX >= 0 && sideIndexY >= 0)
  194. {
  195. displayListItem();
  196. }
  197.  
  198. return super.onScroll(e1, e2, distanceX, distanceY);
  199. }
  200. }
  201.  
  202. public void displayListItem()
  203. {
  204. // compute number of pixels for every side index item
  205. double pixelPerIndexItem = (double) sideIndexHeight / indexListSize;
  206.  
  207. // compute the item index for given event position belongs to
  208. int itemPosition = (int) (sideIndexY / pixelPerIndexItem);
  209.  
  210. // compute minimal position for the item in the list
  211. int minPosition = (int) (itemPosition * pixelPerIndexItem);
  212.  
  213. // get the item (we can do it since we know item index)
  214. Object[] indexItem = indexList.get(itemPosition);
  215.  
  216. // and compute the proper item in the country list
  217. int indexMin = Integer.parseInt(indexItem[1].toString());
  218. int indexMax = Integer.parseInt(indexItem[2].toString());
  219. int indexDelta = Math.max(1, indexMax - indexMin);
  220.  
  221. double pixelPerSubitem = pixelPerIndexItem / indexDelta;
  222. int subitemPosition = (int) (indexMin + (sideIndexY - minPosition) / pixelPerSubitem);
  223.  
  224. ListView listView = (ListView) findViewById(R.id.homelistView);
  225. listView.setSelection(subitemPosition);
  226. }
  227.  
  228. public class EfficientAdapter extends BaseAdapter {
  229. private LayoutInflater mInflater;
  230. private Context context;
  231.  
  232. public EfficientAdapter(Context context) {
  233. mInflater = LayoutInflater.from(context);
  234. this.context=context;
  235.  
  236. }
  237.  
  238.  
  239. public int getCount() {
  240. return CountriesList.name.length;
  241. }
  242.  
  243. public Object getItem(int position) {
  244.  
  245. return position;
  246. }
  247.  
  248. public long getItemId(int position) {
  249. return position;
  250. }
  251.  
  252. public View getView(int position, View convertView, ViewGroup parent) {
  253. ViewHolder holder;
  254. if (convertView == null) {
  255. convertView = mInflater.inflate(R.layout.homemplebrowview, null);
  256. holder = new ViewHolder();
  257. holder.text1 = (TextView) convertView
  258. .findViewById(R.id.name);
  259. holder.text2 = (TextView) convertView
  260. .findViewById(R.id.mrn);
  261. holder.text3 = (TextView) convertView
  262. .findViewById(R.id.date);
  263. holder.text4 = (TextView) convertView
  264. .findViewById(R.id.age);
  265. holder.text5 = (TextView) convertView
  266. .findViewById(R.id.gender);
  267. holder.text6 = (TextView) convertView
  268. .findViewById(R.id.wardno);
  269. holder.text7 = (TextView) convertView
  270. .findViewById(R.id.roomno);
  271. holder.text8 = (TextView) convertView
  272. .findViewById(R.id.bedno);
  273. holder.btnList = (Button)convertView.findViewById(R.id.listbutton);
  274. // holder.btnList.setOnClickListener(this);
  275.  
  276. holder.btnList.setOnClickListener(new OnClickListener() {
  277.  
  278. @Override
  279. public void onClick(View v) {
  280. Intent next=new Intent(context, SeviceDetails.class);
  281. context.startActivity(next);
  282. }
  283. });
  284.  
  285.  
  286. convertView.setTag(holder);
  287. } else {
  288. holder = (ViewHolder) convertView.getTag();
  289. }
  290.  
  291. holder.text1.setText(CountriesList.name[position]);
  292. holder.text2.setText(CountriesList.mrn[position]);
  293. holder.text3.setText(CountriesList.actualstart[position]);
  294. holder.text4.setText(CountriesList.age[position]);
  295. holder.text5.setText(CountriesList.gender[position]);
  296. holder.text6.setText(CountriesList.wardNo[position]);
  297. holder.text7.setText(CountriesList.roomNo[position]);
  298. holder.text8.setText(CountriesList.bedNo[position]);
  299.  
  300. return convertView;
  301. }
  302. static class ViewHolder {
  303. public Button btnList;
  304. public TextView text8;
  305. public TextView text7;
  306. public TextView text6;
  307. public TextView text5;
  308. public TextView text4;
  309. public TextView text1;
  310. public TextView text2;
  311. public TextView text3;
  312. }
  313.  
  314. @Override
  315. public void notifyDataSetChanged()
  316. {
  317. super.notifyDataSetChanged();
  318. }
  319.  
  320.  
  321. }
Add Comment
Please, Sign In to add comment