New extensible listview highly customizable

I need to understand something like this in the picture: enter image description here The "TITLE" rectangle creates a list of objects, and when I click on one of these objects, a "submenu" opens (where there is ELEMENT # 1, 2, etc.). The system is similar to an expandable list, but more customizable.

How do you propose to realize this? How can I make an animation to crash a submenu? If I set up a submenu with leaving, and then, when onClick on the header, I find that with visibility = appears unexpectedly appears ... I would like to revive something in the style of Android.

What are you offering? I was thinking about implementing an object so that every time I needed to understand something like that.

+4
source share
1 answer
CustomListViewDemo.java public class CustomListViewDemo extends ListActivity { private EfficientAdapter adap; private static String[] data = new String[] { "0", "1", "2", "3", "4" }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); adap = new EfficientAdapter(this); setListAdapter(adap); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub super.onListItemClick(l, v, position, id); Toast.makeText(this, "Click-" + String.valueOf(position), Toast.LENGTH_SHORT).show(); } public static class EfficientAdapter extends BaseAdapter implements Filterable { private LayoutInflater mInflater; private Bitmap mIcon1; private Context context; int firstpos=0; public EfficientAdapter(Context context) { // Cache the LayoutInflate to avoid asking for a new one each time. mInflater = LayoutInflater.from(context); this.context = context; } public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.adaptor_content, null); holder = new ViewHolder(); holder.sp = (Spinner) convertView.findViewById(R.id.spinner1); holder.ArrayAdapter_sp = new ArrayAdapter(parent.getContext(),android.R.layout.simple_spinner_item,data); holder.ArrayAdapter_sp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); holder.sp.setAdapter( holder.ArrayAdapter_sp); holder.sp.setOnItemSelectedListener(new OnItemSelectedListener() { private int pos = position; @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int p, long arg3) { // TODO Auto-generated method stub Toast.makeText(context, "select spinner " + String.valueOf(pos)+" with value ID "+p, Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } return convertView; } static class ViewHolder { Spinner sp; ArrayAdapter ArrayAdapter_sp; } @Override public Filter getFilter() { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public int getCount() { // TODO Auto-generated method stub return data.length; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return data[position]; } } } ---------------------------------------------------------------------------------- adaptor_content.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/lineItem" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" > <Spinner android:id="@+id/spinner1" android:layout_width="314dp" android:layout_height="wrap_content" /> </LinearLayout> -------------------------------------------------------------------------- main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="fill_parent" android:layout_width="fill_parent" > <ListView android:id="@+id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginBottom="60dip" android:layout_marginTop="10dip" android:cacheColorHint="#00000000" android:drawSelectorOnTop="false" /> </RelativeLayout> 
+1
source

Source: https://habr.com/ru/post/1381181/


All Articles