Я использую ExpandableList, и я хочу поместить кнопку (или изображение) над списком и между групповым и дочерним представлениями при расширении.Размещение кнопки между groupview и childview в андроиде listview
Я также использую BaseExpandableListAdapter в моем адаптере
моего код выглядит следующим образом
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
final Context context = parent.getContext();
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = inflater.inflate(R.layout.item_lesson_list, parent, false);
mGroupViewHolder = new GroupViewHolder();
mGroupViewHolder.indicatorIV = (IndicatorView)convertView.findViewById(R.id.indicator);
mGroupViewHolder.titleTV = (TextView)convertView.findViewById(R.id.title);
mGroupViewHolder.subtitleTV = (TextView)convertView.findViewById(R.id.subtitle);
mGroupViewHolder.homeworkRateView = (CircleProgressView)convertView.findViewById(R.id.homework_rate);
mGroupViewHolder.header = (LinearLayout) convertView.findViewById(R.id.header);
mGroupViewHolder.headerTitle = (TextView) convertView.findViewById(R.id.list_header_tv);
convertView.setTag(mGroupViewHolder);
} else {
mGroupViewHolder = (GroupViewHolder)convertView.getTag();
}
if (isExpanded) {
mGroupViewHolder.indicatorIV.setState(IndicatorView.STATE_ON);
} else {
mGroupViewHolder.indicatorIV.setState(IndicatorView.STATE_OFF);
}
Lesson lesson = mGroupList.get(groupPosition);
LessonDatum lessonDatum = lesson.lessonData.get(0);
mGroupViewHolder.homeworkRateView.setProgress(lessonDatum.homeworkRate/100.0f);
mGroupViewHolder.homeworkRateView.setText(lessonDatum.homeworkRate + "%");
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
final Context context = parent.getContext();
Lesson lesson = mGroupList.get(groupPosition);
LessonDatum lessonDatum = lesson.lessonData.get(0);
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.content_lesson_list, null);
mChildViewHolder = new ChildViewHolder();
mChildViewHolder.chapterLV = (ExpandedListView) convertView.findViewById(R.id.chapterListView);
mChildViewHolder.homeworkLV = (ExpandedListView) convertView.findViewById(R.id.homeworkListView);
mChildViewHolder.homeworkProgressTV = (TextView) convertView.findViewById(R.id.homework_progress_tv);
mChildViewHolder.homeworkProgressBar = (ProgressBar) convertView.findViewById(R.id.homework_progress_bar);
convertView.setTag(mChildViewHolder);
} else {
mChildViewHolder = (ChildViewHolder)convertView.getTag();
}
int homeworkRate = lessonDatum.homeworkRate;
mChildViewHolder.homeworkProgressTV.setText(homeworkRate+"%");
mChildViewHolder.homeworkProgressBar.setProgress(homeworkRate);
final ArrayList<String> chapterList = new ArrayList<>(lessonDatum.chapters.size());
for (Chapter c : lessonDatum.chapters) chapterList.add(c.content);
ArrayAdapter<String> chapterAdapter = new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, chapterList);
mChildViewHolder.chapterLV.setAdapter(chapterAdapter);
final ArrayList<String> homeworkList = new ArrayList<>(lessonDatum.homeworks.size());
for (Homework h : lessonDatum.homeworks) homeworkList.add(h.content);
ArrayAdapter<String> homeworkAdapter = new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, homeworkList);
mChildViewHolder.homeworkLV.setAdapter(homeworkAdapter);
final ClipboardManager clipboardManager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
mChildViewHolder.homeworkLV.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CharSequence charSequence = homeworkList.get(position);
ClipData clipData = ClipData.newPlainText("LABEL",charSequence);
clipboardManager.setPrimaryClip(clipData);
}
});
mChildViewHolder.chapterLV.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CharSequence charSequence = chapterList.get(position);
ClipData clipData = ClipData.newPlainText("LABEL", charSequence);
clipboardManager.setPrimaryClip(clipData);
}
});
return convertView;
}
Вы можете легко представить себе вид, когда речь идет о «кнопках плавающих действий» в андроиде LI Угадай.
помощь в помощи!
Я пробовал размещать кнопки с использованием поля, такого как «-20dp» на моем xml, но, похоже, он не работал. Изображение было обрезано по краю каждого вида. –