Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid ListView with fast scroll and alphabetical section index
    text
    copied!<p>How to add testview when touching a letter on right alphabet panel as shown in images? Could you please help me? Below is my code. </p> <p>In details, I am looking for an example exactly like below image. Currently I did the sorting of data. When I click on right alphabet panel it shows the data properly. But the problem is when touching a letter the right alphabet panel I need to show what letter he is pressing in large size shown in image(E). How can I do it, could you please help me? Thank you in advance!</p> <p><img src="https://i.stack.imgur.com/lFqiE.png" alt="screenshot of desired UI"> </p> <pre><code>// MainActivity.java public class MainActivity extends Activity implements SearchView.OnQueryTextListener, SearchView.OnCloseListener { private IndexableListView listView; private SearchView search; EfficientAdapter objectAdapter; EfficientAdapter2 objectAdapter1; int textlength = 0; private CheckBox checkStat, checkRoutine, checkTat; private ArrayList&lt;Patient&gt; patientListArray; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.homempleb); Log.i("scan"," txtScanResult "); ActionItem nextItem = new ActionItem(); final QuickAction quickAction = new QuickAction(this, QuickAction.VERTICAL); quickAction.addActionItem(nextItem); quickAction.setOnDismissListener(new QuickAction.OnDismissListener() { @Override public void onDismiss() { Toast.makeText(getApplicationContext(), "Dismissed", Toast.LENGTH_SHORT).show(); } }); listView = (IndexableListView) findViewById(R.id.homelistView); listView.setTextFilterEnabled(true); listView.setFastScrollEnabled(true); listView.setFastScrollAlwaysVisible(true); objectAdapter = new EfficientAdapter(this); listView.setAdapter(objectAdapter); } @Override public boolean onClose() { return false; } @Override public boolean onQueryTextChange(String newText) { return false; } @Override public boolean onQueryTextSubmit(String query) { return false; } } </code></pre> <p>...</p> <pre><code>// EfficientAdapter.java public class EfficientAdapter extends BaseAdapter implements SectionIndexer { private String mSections = "#ABCDEFGHIJKLMNOPQRSTUVWXYZ"; ArrayList&lt;Patient&gt; patientListArray; private LayoutInflater mInflater; private Context context; public EfficientAdapter(Context context) { mInflater = LayoutInflater.from(context); this.context=context; String patientListJson = CountriesList.jsonData; JSONObject jssson; try { jssson = new JSONObject(patientListJson); patientListJson = jssson.getString("PostPatientDetailResult"); } catch (JSONException e) { e.printStackTrace(); } Gson gson = new Gson(); JsonParser parser = new JsonParser(); JsonArray Jarray = parser.parse(patientListJson).getAsJsonArray(); patientListArray = new ArrayList&lt;Patient&gt;(); for (JsonElement obj : Jarray) { Patient patientList = gson.fromJson(obj, Patient.class); patientListArray.add(patientList); Collections.sort(patientListArray, new Comparator&lt;Object&gt;() { @Override public int compare(Object o1, Object o2) { Patient p1 = (Patient) o1; Patient p2 = (Patient) o2; return p1.getName().compareToIgnoreCase(p2.getName()); } }); } } public int getCount() { return patientListArray.size(); } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.homemplebrowview, null); holder = new ViewHolder(); holder.text1 = (TextView) convertView.findViewById(R.id.name); holder.text2 = (TextView) convertView.findViewById(R.id.mrn); holder.text3 = (TextView) convertView.findViewById(R.id.date); holder.text4 = (TextView) convertView.findViewById(R.id.age); holder.text5 = (TextView) convertView.findViewById(R.id.gender); holder.text6 = (TextView) convertView.findViewById(R.id.wardno); holder.text7 = (TextView) convertView.findViewById(R.id.roomno); holder.text8 = (TextView) convertView.findViewById(R.id.bedno); holder.btnList = (Button) convertView.findViewById(R.id.listbutton); holder.btnList.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // Intent next=new Intent(context, SeviceDetails.class); // context.startActivity(next); } }); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.text1.setText(Util.formatN2H(patientListArray.get(position).getName())); holder.text2.setText(patientListArray.get(position).getMrnNumber()); holder.text3.setText(Util.formatN2H(patientListArray.get(position).getRoom())); holder.text4.setText(Util.formatN2H(patientListArray.get(position).getAge())); holder.text5.setText(Util.formatN2H( patientListArray.get(position).getGender())); holder.text6.setText(Util.formatN2H(patientListArray.get(position).getWard())); holder.text7.setText(Util.formatN2H(patientListArray.get(position).getRoom())); holder.text8.setText(Util.formatN2H(patientListArray.get(position).getBed())); return convertView; } static class ViewHolder { public Button btnList; public TextView text8; public TextView text7; public TextView text6; public TextView text5; public TextView text4; public TextView text1; public TextView text2; public TextView text3; } @Override public void notifyDataSetChanged() { super.notifyDataSetChanged(); } //@Override public int getPositionForSection(int section) { // If there is no item for current section, previous section will be selected for (int i = section; i &gt;= 0; i--) { for (int j = 0; j &lt; getCount(); j++) { if (i == 0) { // For numeric section for (int k = 0; k &lt;= 9; k++) { if (StringMatcher.match(String.valueOf(patientListArray.get(j).getName().charAt(0)), String.valueOf(k))) return j; } } else { if (StringMatcher.match(String.valueOf(patientListArray.get(j).getName().charAt(0)), String.valueOf(mSections.charAt(i)))) return j; } } } return 0; } //@Override public int getSectionForPosition(int position) { return 0; } //@Override public Object[] getSections() { String[] sections = new String[mSections.length()]; for (int i = 0; i &lt; mSections.length(); i++) sections[i] = String.valueOf(mSections.charAt(i)); return sections; } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload