- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有基本的 expandablelistview
并且想知道如何让每个 child 和组都有不同的图像。我需要以某种方式修改可扩展列表适配器吗?任何帮助、想法、评论将不胜感激。谢谢:)
主要 Activity :
public class MainActivity extends Activity{
.....
public static final Integer[] images = {
R.drawable.vegetables,
R.drawable.fruits,
R.drawable.drinks,
R.drawable.dessert
};
@Override
protected void onCreate(Bundle savedInstanceState) {
}
我的适配器
public class ExpandableListAdapter extends BaseExpandableListAdapter{
@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 = (TextView) convertView
.findViewById(R.id.lblListItem);
txtListChild.setText(childText);
ImageView imgListChild= (ImageView) convertView
.findViewById(R.id.IV_childImage);
// I could store images somehow in two dimensional array and then depending on that draw their reference id.
// imgListChild.setImageResource();
return convertView;
}
@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 = (TextView) convertView
.findViewById(R.id.lblListHeader);
lblListHeader.setTypeface(null, Typeface.BOLD);
lblListHeader.setText(headerTitle);
ImageView imgListGroup= (ImageView) convertView
.findViewById(R.id.IV_group);
imgListGroup.setImageResource(MainActivity.images[groupPosition]);
return convertView;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return true;
}
}
最佳答案
在 list_group
和 list_item
xml 文件中添加一个 ImageView
并将图像设置为适配器类中的那些 ImageViews。
就像您将文本设置为 TextView
一样,您可以将图像设置为 ImageView
TextView txtListChild = (TextView) convertView
.findViewById(R.id.lblListItem);
txtListChild.setText(childText);
ImageView imgListChild = (ImageView) convertView
.findViewById(R.id.image);
imgListChild.setImageResource(R.drawable.imagename);
你的xml文件应该是
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/lblListHeader"
android:layout_width="wrap_content"
android:layout_height="?android:attr/listPreferredItemHeight"
android:layout_marginLeft="8dp"
android:drawableRight="@drawable/ic_launcher"
android:gravity="center_horizontal"
android:paddingLeft="32dp"
android:paddingTop="8dp"
android:text="Test"
android:textSize="20sp"
android:textAlignment="textEnd"
android:textStyle="bold" >
</CheckedTextView>
<ImageView
android:id="@+id/IV_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="group image"
/>
</LinearLayout>
编辑:
图片路径\资源ID的存储方式有很多种,最简单的方式就是存储在ArrayList
和HashMap
中。
声明一个新的 ArrayList 和 HashMap 来存储组和子项的资源 ID。
public List<Integer> groupImages;
public HashMap<Integer, List<Integer>> childImages;
将其填充到您的 prepareListData()
函数中。
groupImages= new ArrayList<Integer>();
groupImages.add(R.drawable.vegetables);
groupImages.add(R.drawable.fruits);
groupImages.add(R.drawable.drinks);
groupImages.add(R.drawable.deserts);
childImages = new HashMap<Integer, List<Integer>>();
List<Integer> vegetablesi = new ArrayList<Integer>();
vegetablesi.add(R.drawable.Tomatoes);
vegetablesi.add(R.drawable.Potatoes);
vegetablesi.add(R.drawable.Cucumbers);
vegetablesi.add(R.drawable.Pumpkins);
vegetablesi.add(R.drawable.Peppers);
vegetablesi.add(R.drawable.Onions);
vegetablesi.add(R.drawable.Garlic);
List<Integer> fruitsi = new ArrayList<Integer>();
fruitsi.add(R.drawable.Strawberries);
fruitsi.add(R.drawable.Blackcurrants);
fruitsi.add(R.drawable.Redcurrant);
fruitsi.add(R.drawable.Gooseberry);
fruitsi.add(R.drawable.Kiwifruit);
fruitsi.add(R.drawable.Grape);
List<Integer> drinksi = new ArrayList<Integer>();
drinksi.add(R.drawable.Vodka);
drinksi.add(R.drawable.Milk);
drinksi.add(R.drawable.Water);
drinksi.add(R.drawable.CocaCola);
drinksi.add(R.drawable.Sprite);
List<Integer> desertsi = new ArrayList<Integer>();
desertsi.add(R.drawable.Vodka);
desertsi.add(R.drawable.Milk);
desertsi.add(R.drawable.Water);
desertsi.add(R.drawable.CocaCola);
desertsi.add(R.drawable.Sprite);
childImages.put(groupImages.get(0), vegetablesi);
childImages.put(groupImages.get(1), fruitsi);
childImages.put(groupImages.get(2), drinksi);
childImages.put(groupImages.get(3), desertsi);
在 getGroupView
和 getChildView
函数中,您可以通过这种方式访问这些图像:
@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 = (TextView) convertView
.findViewById(R.id.lblListHeader);
lblListHeader.setTypeface(null, Typeface.BOLD);
lblListHeader.setText(headerTitle);
ImageView imageView = (ImageView) convertView.findViewById(R.id.IV_group);
int imageId = this.groupImages.get(groupPosition);
imageView.setImageResource(imageId);
return convertView;
}
@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 = (TextView) convertView
.findViewById(R.id.lblListItem);
txtListChild.setText(childText);
ImageView imageView = (ImageView) convertView.findViewById(R.id.IV_child);
int imageId = this.childImages.get(this.groupImages.get(groupPosition)).get(childPosition);
imageView.setImageResource(imageId);
return convertView;
}
关于android - 可扩展列表查看组和 child 的不同图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19481185/
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 4 个月前关闭。 Improve
我已经为这个概念苦苦挣扎了一段时间。我正在尝试提出一种松散耦合的 Azure 组件设计,该设计可以使用队列和辅助角色完全可扩展,从而使项目出列并处理。我可以随意扩展工作角色,并且发布到队列从来都不是问
尝试在 android 中创建可扩展 ListView 。我希望每个组都扩展到一个预设的 XML 布局文件。例如。 A组{ 展开时显示 XML 文件 A:按钮、搜索栏、微调器等 } 乙组{ 展开时显示
在 android 可扩展 ListView 中,我需要显示子项,仅在按下展开折叠节点时..即;我不想让 children 按下可扩展 ListView 的行。我该如何完成? 问候,罗尼 最佳答案 我
我正在开发一个Android代码编辑器,但是当我对它应用语法突出显示时,它会变得很滞后,是否有任何方法可以对其进行优化? 这是我的代码: protected void onCreate(Bundle
我正在开发安卓应用程序。我发现下面的输出图像显示了以下问题。请帮我解决我的问题。 Xml file 输出截图- 最佳答案 使用 setIndicatorBounds。 开发链接:http://deve
最近我在尝试使用 android 的可扩展 ListView ,所以我四处搜索并偶然发现了这个 http://about-android.blogspot.com/2010/04/steps-to-i
在 Control.Exception 的文档中在 base 4.4.0.0 中有一个如何创建异常层次结构的示例。该示例展示了如何通过根据父异常声明 Exception 类的实例来捕获特定异常的概括。
我正在开发一个将显示一些可扩展列表的应用程序。事实上,有时该对象不会有任何子对象。所以我想在我的可扩展列表中仅显示具有子元素的元素。我尝试在 getGroupView 函数中放入 if ,如果该对象没
这是一个有点开放式的问题,但是,制作良好的可扩展 Electron 应用程序的好方法是什么? VSCode、Atom 和许多其他工具都支持扩展,但它们的代码库太大,我无法理解发生了什么。我对 Jupy
我和一些 friend 为 Facebook 编写了一款游戏,但没有过多考虑游戏的实际架构 - 想象一下当我们每月吸引超过 300,000 名独立玩家并且我们的服务器崩溃时我们的惊喜。 现在我们正在努
您好,我正在使用 Android Expandable listview 并在其中用不同的 View 膨胀 child 。我遇到的问题是,当我展开一个 View 然后打开另一个父 View 时,布局中
我的场景是,我有一个可扩展 ListView ,在列表中动态添加我和 child 。我的子布局就是这样。 当我点击相应项目的编辑按钮时,我打开对话框从用户那里获取输入,然后点击更新相应的详细信息更新到
我想使用 RecyclerView 创建项目列表,并希望在单击时展开特定项目(如电话列表)。我想在不使用任何库的情况下实现这一目标。谁能帮忙? 最佳答案 获取子数据列表作为数据集中父数据的成员。并且,
我使用 ExpandableListview ... 我能够将从 Web 服务检索到的值设置为子布局的单个 Textview。现在需要在 Web 服务的子布局中设置两个不同的 Textviews 值我
我的可扩展 ListView 的顺序似乎不正确。 这是我的数据提供者: public class DataProvider { public static HashMap> getInfo() {
所以我试图在我的可扩展列表的子项列表中创建一行,但它不起作用,这是我的布局:
我有一个需要自定义箭头的可扩展 ListView 。我尝试将 groupIndicator 设置为这样的选择器: 但是,出于某种原因,这会扭曲箭头的尺寸,请参见下文: 知道它们为
我正在尝试实现具有 2 种不同布局的 ExpandableListView,到目前为止,我花了一段时间才真正让 1 个 View 组使用一个布局,而其他 2 个 View 组使用另一个。到目前为止,外
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我是一名优秀的程序员,十分优秀!