#android #view #expandable
#Android #Вид #расширяемый
Вопрос:
Может ли кто-нибудь помочь мне создать расширяемый вид, например, кнопку «Еще» в Android Market? когда мы нажимаем на кнопку «Еще», это расширит представление с более подробной информацией о приложении в Android market place..
Любая помощь будет высоко оценена..
Спасибо
сатирический
Ответ №1:
Я работал над чем-то подобным.
На данный момент это выглядит так в режиме «больше / меньше«:
Работа все еще продолжается, но проект и исходный код можно посмотреть здесь
Ответ №2:
Возможно, лучший способ реализовать это — использовать ArrayAdapter. При нажатии на кнопку «Еще» извлекаются дополнительные данные и используется метод <a rel="noreferrer noopener nofollow" href="https:///developer.android.com/reference/android/widget/ArrayAdapter.html#addAll(java.util.Collection)» rel=»nofollow»>addAll() для добавления всех вновь извлеченных данных в адаптер. <a rel="noreferrer noopener nofollow" href="https:///developer.android.com/reference/android/widget/ArrayAdapter.html#addAll(java.util.Collection)» rel=»nofollow»>addAll() автоматически распространит изменения в ListView, поэтому не утруждайте себя уведомлением об этом явно.
Комментарии:
1. спасибо за быстрый ответ, но я хотел бы создать представление, в котором есть не только текст, некоторые кнопки и ссылки и некоторые другие поля edittext. Итак, как я могу этого добиться?
Ответ №3:
public class ModifiedExpandableList extends Activity {
ExpandableListAdapter mAdapter;
private ExpandableListView mExpandableListView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_copy);
// set our list
mExpandableListView = (ExpandableListView)findViewById(R.id.list);
// Set up our adapter
mAdapter = new MyExpandableListAdapter(this);
mExpandableListView.setAdapter(mAdapter);
// Need no icon as of now
mExpandableListView.setGroupIndicator(null);
registerForContextMenu(mExpandableListView);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
menu.setHeaderTitle("Sample menu");
menu.add(0, 0, 0,"dd");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) item.getMenuInfo();
String title = ((TextView) info.targetView).getText().toString();
int type = ExpandableListView.getPackedPositionType(info.packedPosition);
if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
int groupPos = ExpandableListView.getPackedPositionGroup(info.packedPosition);
int childPos = ExpandableListView.getPackedPositionChild(info.packedPosition);
Toast.makeText(this, title ": Child " childPos " clicked in group " groupPos,
Toast.LENGTH_SHORT).show();
return true;
} else if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
int groupPos = ExpandableListView.getPackedPositionGroup(info.packedPosition);
Toast.makeText(this, title ": Group " groupPos " clicked", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
/**
* A simple adapter which maintains an ArrayList of photo resource Ids.
* Each photo is displayed as an image. This adapter supports clearing the
* list of photos and adding a new photo.
*
*/
public class MyExpandableListAdapter extends BaseExpandableListAdapter {
Context mContext;
public MyExpandableListAdapter(Context context){
this.mContext = context;
}
// Sample data set. children[i] contains the children (String[]) for groups[i].
private String[] groups = { "People Names", "Dog Names", "Cat Names", "Fish Names" };
private String[][] children = {
{ "Arnold", "Barry", "Chuck", "David" },
{ "Ace", "Bandit", "Cha-Cha", "Deuce" },
{ "Fluffy", "Snuggles","ddef","afadsfasf" },
{ "Goldy", "Bubbles","sfef","dafs" }
};
public Object getChild(int groupPosition, int childPosition) {
return children[groupPosition][childPosition];
}
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
public int getChildrenCount(int groupPosition) {
int result=4;
return resu<
}
public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
View convertView, ViewGroup parent) {
View v = null;
// changed here
LayoutInflater li = ModifiedExpandableList.this.getLayoutInflater();
v = li.inflate(R.layout.child_view,null);
TextView tv = (TextView)v.findViewById(R.id.TextView01);
tv.setText(getChild(groupPosition, childPosition).toString());
ImageView im = (ImageView)v.findViewById(R.id.ImageView01);
im.setBackgroundDrawable(ModifiedExpandableList.this.getResources().getDrawable(R.drawable.closearrow));
return v;
}
public Object getGroup(int groupPosition) {
return groups[groupPosition];
}
public int getGroupCount() {
return groups.length;
}
public long getGroupId(int groupPosition) {
return groupPosition;
}
public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
ViewGroup parent) {
// change here to modify parent group layout
View v = null;
LayoutInflater li = ModifiedExpandableList.this.getLayoutInflater();
v = li.inflate(R.layout.parent_view,null);
TextView tv = (TextView)v.findViewById(R.id.TextView01);
tv.setText(getGroup(groupPosition).toString());
ImageView im = (ImageView)v.findViewById(R.id.ImageView01);
im.setBackgroundDrawable(ModifiedExpandableList.this.getResources().getDrawable(R.drawable.closearrow));
if(isExpanded){
im.setBackgroundDrawable(ModifiedExpandableList.this.getResources().getDrawable(R.drawable.closearrow_b));
}
return v;
}
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
public boolean hasStableIds() {
return true;
}
}
}