Commit c182e994 by Paktalin

expandable listview for order activity created

parent 658992de
...@@ -3,11 +3,13 @@ package com.example.paktalin.lavina; ...@@ -3,11 +3,13 @@ package com.example.paktalin.lavina;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.widget.ExpandableListView; import android.widget.ExpandableListView;
import android.widget.SimpleExpandableListAdapter;
import com.example.paktalin.lavina.adapters.ExpandableListAdapter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.List;
/** /**
* Created by Paktalin on 14/05/2018. * Created by Paktalin on 14/05/2018.
...@@ -15,99 +17,65 @@ import java.util.Map; ...@@ -15,99 +17,65 @@ import java.util.Map;
public class OrderActivity extends AppCompatActivity { public class OrderActivity extends AppCompatActivity {
// названия компаний (групп) ExpandableListAdapter listAdapter;
String[] groups = new String[] {"HTC", "Samsung", "LG"}; ExpandableListView expListView;
List<String> listDataHeader;
HashMap<String, List<String>> listDataChild;
// названия телефонов (элементов) @Override
String[] phonesHTC = new String[] {"Sensation", "Desire", "Wildfire", "Hero"}; protected void onCreate(Bundle savedInstanceState) {
String[] phonesSams = new String[] {"Galaxy S II", "Galaxy Nexus", "Wave"}; super.onCreate(savedInstanceState);
String[] phonesLG = new String[] {"Optimus", "Optimus Link", "Optimus Black", "Optimus One"}; setContentView(R.layout.activity_order);
// коллекция для групп expListView = findViewById(R.id.expandable_list_view);
ArrayList<Map<String, String>> groupData;
// коллекция для элементов одной группы prepareListData();
ArrayList<Map<String, String>> childDataItem;
// общая коллекция для коллекций элементов listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild);
ArrayList<ArrayList<Map<String, String>>> childData;
// в итоге получится childData = ArrayList<childDataItem>
// список атрибутов группы или элемента // setting list adapter
Map<String, String> m; expListView.setAdapter(listAdapter);
}
ExpandableListView elvMain; private void prepareHeadersData() {
String[] groups = new String[] {"Color", "Brand", "Price", "Year", "Strength", "Country", "Title", "Type", "Variety"};
listDataHeader = new ArrayList<>();
listDataHeader.addAll(Arrays.asList(groups));
}
private void prepareListData() {
prepareHeadersData();
/** Called when the activity is first created. */ listDataChild = new HashMap<>();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); List<String> colors = new ArrayList<>();
setContentView(R.layout.activity_order); colors.addAll(Arrays.asList("Gray", "Orange", "Red whine", "Rosé", "Tawny", "White wine", "Yellow"));
List<String> brands = new ArrayList<>();
List<String> prices = new ArrayList<>();
List<String> years = new ArrayList<>();
years.addAll(Arrays.asList("2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007",
"2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018"));
List<String> strengths = new ArrayList<>();
List<String> countries = new ArrayList<>();
List<String> titles = new ArrayList<>();
List<String> types = new ArrayList<>();
types.addAll(Arrays.asList("Syrah", "Zinfandel", "Cabernet Sauvignon", "Pinot Noir",
"Chardonnay", "Sauvignon Blanc", "Pinot Gris", "Riesling"));
List<String> varieties = new ArrayList<>();
// заполняем коллекцию групп из массива с названиями групп listDataChild.put(listDataHeader.get(0), colors);
groupData = new ArrayList<Map<String, String>>(); listDataChild.put(listDataHeader.get(1), brands);
for (String group : groups) { listDataChild.put(listDataHeader.get(2), prices);
// заполняем список атрибутов для каждой группы listDataChild.put(listDataHeader.get(3), years);
m = new HashMap<String, String>(); listDataChild.put(listDataHeader.get(4), strengths);
m.put("groupName", group); // имя компании listDataChild.put(listDataHeader.get(5), countries);
groupData.add(m); listDataChild.put(listDataHeader.get(6), titles);
} listDataChild.put(listDataHeader.get(7), types);
listDataChild.put(listDataHeader.get(8), varieties);
// список атрибутов групп для чтения
String groupFrom[] = new String[] {"groupName"};
// список ID view-элементов, в которые будет помещены атрибуты групп
int groupTo[] = new int[] {android.R.id.text1};
// создаем коллекцию для коллекций элементов
childData = new ArrayList<ArrayList<Map<String, String>>>();
// создаем коллекцию элементов для первой группы
childDataItem = new ArrayList<Map<String, String>>();
// заполняем список атрибутов для каждого элемента
for (String phone : phonesHTC) {
m = new HashMap<String, String>();
m.put("phoneName", phone); // название телефона
childDataItem.add(m);
}
// добавляем в коллекцию коллекций
childData.add(childDataItem);
// создаем коллекцию элементов для второй группы
childDataItem = new ArrayList<Map<String, String>>();
for (String phone : phonesSams) {
m = new HashMap<String, String>();
m.put("phoneName", phone);
childDataItem.add(m);
}
childData.add(childDataItem);
// создаем коллекцию элементов для третьей группы
childDataItem = new ArrayList<Map<String, String>>();
for (String phone : phonesLG) {
m = new HashMap<String, String>();
m.put("phoneName", phone);
childDataItem.add(m);
}
childData.add(childDataItem);
// список атрибутов элементов для чтения
String childFrom[] = new String[] {"phoneName"};
// список ID view-элементов, в которые будет помещены атрибуты элементов
int childTo[] = new int[] {android.R.id.text1};
SimpleExpandableListAdapter adapter = new SimpleExpandableListAdapter(
this,
groupData,
android.R.layout.simple_expandable_list_item_1,
groupFrom,
groupTo,
childData,
android.R.layout.simple_list_item_1,
childFrom,
childTo);
elvMain = (ExpandableListView) findViewById(R.id.list_view_year);
elvMain.setAdapter(adapter);
} }
} }
package com.example.paktalin.lavina.adapters;
import android.content.Context;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;
import com.example.paktalin.lavina.R;
import java.util.HashMap;
import java.util.List;
/**
* Created by Paktalin on 14/05/2018.
*/
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private Context _context;
private List<String> _listDataHeader; // header titles
// child data in format of header title, child title
private HashMap<String, List<String>> _listDataChild;
public ExpandableListAdapter(Context context, List<String> listDataHeader,
HashMap<String, List<String>> listChildData) {
this._context = context;
this._listDataHeader = listDataHeader;
this._listDataChild = listChildData;
}
@Override
public Object getChild(int groupPosition, int childPosititon) {
return this._listDataChild.get(this._listDataHeader.get(groupPosition))
.get(childPosititon);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String childText = (String) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}
TextView txtListChild = convertView
.findViewById(R.id.lblListItem);
txtListChild.setText(childText);
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return this._listDataChild.get(this._listDataHeader.get(groupPosition))
.size();
}
@Override
public Object getGroup(int groupPosition) {
return this._listDataHeader.get(groupPosition);
}
@Override
public int getGroupCount() {
return this._listDataHeader.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
String headerTitle = (String) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_group, null);
}
TextView lblListHeader = convertView
.findViewById(R.id.lblListHeader);
lblListHeader.setTypeface(null, Typeface.BOLD);
lblListHeader.setText(headerTitle);
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
\ No newline at end of file
...@@ -25,11 +25,11 @@ ...@@ -25,11 +25,11 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@id/header" android:layout_below="@id/header"
android:background="@android:color/white"> android:background="@android:color/transparent">
<ExpandableListView <ExpandableListView
android:id="@+id/list_view_year" android:id="@+id/expandable_list_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
</RelativeLayout> </RelativeLayout>
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="8dp"
android:background="#000000">
<TextView
android:id="@+id/lblListHeader"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
android:textSize="17dp"
android:textColor="#f9f93d" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="55dip"
android:orientation="vertical" >
<TextView
android:id="@+id/lblListItem"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="17dip"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingLeft="?android:attr/expandableListPreferredChildPaddingLeft" />
</LinearLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment