Пытаюсь разобраться с ExpandableListView
и не пойму как обновить адаптер? когда вызываю адаптер expListAdapter
, то он кроме двух методов notifyAll()
и notify()
ничего больше не видит.
public class MainActivity extends AppCompatActivity {
ExpandableListView expListView;
ExpandableListAdapter expListAdapter;
List<String> expListTitle;
HashMap<String, List<String>> expListDetail;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
expListView = (ExpandableListView) findViewById(R.id.expListView);
expListDetail = ListData.loadData();
expListTitle = new ArrayList<>(expListDetail.keySet());
expListAdapter = new ListAdapter(this, expListTitle, expListDetail);
expListView.setAdapter(expListAdapter);
expListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
Toast.makeText(getApplicationContext(),
expListTitle.get(groupPosition) + " Список раскрыт.",
Toast.LENGTH_SHORT).show();
ListData.add();
}
});
expListView.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int groupPosition) {
Toast.makeText(getApplicationContext(),
expListTitle.get(groupPosition) + " Список скрыт.",
Toast.LENGTH_SHORT).show();
}
});
expListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
Toast.makeText(getApplicationContext(),
expListTitle.get(groupPosition)
+ " : " + expListDetail.get(expListTitle.get(groupPosition))
.get(childPosition), Toast.LENGTH_SHORT).show();
return false;
}
});
}
class ListAdapter extends BaseExpandableListAdapter {
private Context context;
private List<String> expListTitle;
private HashMap<String, List<String>> expListDetail;
public ListAdapter(Context context, List<String> expListTitle,
HashMap<String, List<String>> expListDetail) {
this.context = context;
this.expListTitle = expListTitle;
this.expListDetail = expListDetail;
}
@Override
public Object getChild(int listPosition, int expListPosition) {
return expListDetail.get(
expListTitle.get(listPosition)
).get(expListPosition);
}
@Override
public long getChildId(int listPosition, int expandedListPosition) {
return expandedListPosition;
}
@Override
public View getChildView(int listPosition, final int expandedListPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// получаем дочерний элемент
String expListText = (String) getChild(listPosition, expandedListPosition);
if (convertView == null) {
LayoutInflater mInflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.list_item, null);
}
TextView expListTextView = (TextView) convertView.findViewById(R.id.expandedListItem);
expListTextView.setText(expListText);
return convertView;
}
@Override
public int getChildrenCount(int listPosition) {
return expListDetail.get(
expListTitle.get(listPosition)
).size();
}
@Override
public Object getGroup(int listPosition) {
return expListTitle.get(listPosition);
}
@Override
public int getGroupCount() {
return expListTitle.size();
}
@Override
public long getGroupId(int listPosition) {
return listPosition;
}
@Override
public View getGroupView(int listPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// получаем родительский элемент
String listTitle = (String) getGroup(listPosition);
if (convertView == null) {
LayoutInflater mInflater = (LayoutInflater) context.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.list_group, null);
}
TextView listTitleTextView = (TextView) convertView
.findViewById(R.id.listTitle);
listTitleTextView.setTypeface(null, Typeface.BOLD);
listTitleTextView.setText(listTitle);
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int listPosition, int expandedListPosition) {
return true;
}
}
}
Добавьте этот метод в ваш проект и используйте его:
public void setNewItems(List<String> listDataHeader,HashMap<String, List<String>> listChildData) {
this._listDataHeader = listDataHeader;
this._listDataChild = listChildData;
notifyDataSetChanged();
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Установил SASS для саблайма, также ранее был установлен SCSS для Sublime Text 3, но autocomplete всех CSS свойств работает только для SCSSКто знает в чем проблема...
Как лаконичнее можно сделать тень для элемента, чтобы он выглядел объемным? На данный момент я создаю отдельный элементbottom-frame-shadow задаю ему...
Сейчас открыл исходный код "эквалайзера" в VK и увидел что он содержит в себе псевдо-элемент ::before, но удивило меня вот что: