gpt4 book ai didi

android - 可扩展列表查看组和 child 的不同图像

转载 作者:太空狗 更新时间:2023-10-29 16:39:57 25 4
gpt4 key购买 nike

我有基本的 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_grouplist_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的存储方式有很多种,最简单的方式就是存储在ArrayListHashMap中。

声明一个新的 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);

getGroupViewgetChildView 函数中,您可以通过这种方式访问​​这些图像:

@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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com