Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将图像添加到expandablelistview和hashmap中的第一个子级_Android_Hashmap_Imageview_Expandablelistview - Fatal编程技术网

Android 将图像添加到expandablelistview和hashmap中的第一个子级

Android 将图像添加到expandablelistview和hashmap中的第一个子级,android,hashmap,imageview,expandablelistview,Android,Hashmap,Imageview,Expandablelistview,我对java编程比较陌生,遇到了一个问题。在我的项目中,我使用一个可扩展列表适配器创建一个可扩展的listview,其中包含需要从不同活动填充的标题和子项 我的意图是只在第一个孩子身上添加一个数字,在其他孩子身上添加TextView。如何做到这一点?以及如何从不同的活动中填充此imageview(因此图像在不同的活动中需要不同)。 提前谢谢 可扩展列表适配器: 公共类ExpandableListAdapter扩展了BaseExpandableListAdapter{ private Contex

我对java编程比较陌生,遇到了一个问题。在我的项目中,我使用一个可扩展列表适配器创建一个可扩展的listview,其中包含需要从不同活动填充的标题和子项

我的意图是只在第一个孩子身上添加一个数字,在其他孩子身上添加TextView。如何做到这一点?以及如何从不同的活动中填充此imageview(因此图像在不同的活动中需要不同)。 提前谢谢

可扩展列表适配器

公共类ExpandableListAdapter扩展了BaseExpandableListAdapter{

private Context context;
private final List<String> listDataHeader;
private final HashMap<String, List<String>> listHashMap;

public ExpandableListAdapter(Context context, List<String> listDataHeader, HashMap<String, List<String>> listHashMap) {
    this.context = context;
    this.listDataHeader = listDataHeader;
    this.listHashMap = listHashMap;
}

@Override
public int getGroupCount() {
    return listDataHeader.size();
}

@Override
public int getChildrenCount(int i) {
    return listHashMap.get(listDataHeader.get(i)).size();
}

@Override
public Object getGroup(int i) {
    return listDataHeader.get(i);
}

@Override
public Object getChild(int i, int i1) {
    return listHashMap.get(listDataHeader.get(i)).get(i1); //i = group item, i1 = childItem.
}

@Override
public long getGroupId(int i) {
    return i;
}

@Override
public long getChildId(int i, int i1) {
    return i1;
}

@Override
public boolean hasStableIds() {
    return false;
}

@Override
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
    String headerTitle = (String) getGroup(i);
    {
        LayoutInflater inflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.list_group, null);
    }
    TextView lblListHeader = (TextView) view.findViewById(R.id.lblListHeader);
    lblListHeader.setTypeface(null, Typeface.BOLD);
    lblListHeader.setText(headerTitle);

    if (i == 0)
        lblListHeader.setBackgroundColor(Color.parseColor("#ca4e18"));

    if (i == 0)
        lblListHeader.setTextColor(Color.parseColor("#EEEEEE"));

    else
        lblListHeader.setBackgroundColor(Color.parseColor("#EEEEEE"));

    return view;
}

@Override
public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
    final String childText = (String) getChild(i, i1);
    if (view == null) {

        LayoutInflater inflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.list_item2, null);
    }


    TextView txtListChild = (TextView) view.findViewById(R.id.lblListItem);
    txtListChild.setText(childText);


    return view;
}

@Override
public boolean isChildSelectable(int i, int i1) {
    return true;
}
私有上下文;
私有最终列表listDataHeader;
私有最终HashMap listHashMap;
公共ExpandableListAdapter(上下文上下文、列表listDataHeader、HashMap listHashMap){
this.context=上下文;
this.listDataHeader=listDataHeader;
this.listHashMap=listHashMap;
}
@凌驾
public int getGroupCount(){
返回listDataHeader.size();
}
@凌驾
公共整数getChildrenCount(整数i){
返回listHashMap.get(listDataHeader.get(i)).size();
}
@凌驾
公共对象getGroup(inti){
返回listDataHeader.get(i);
}
@凌驾
公共对象getChild(inti,inti1){
返回listHashMap.get(listDataHeader.get(i)).get(i1);//i=group项,i1=childItem。
}
@凌驾
公共长getGroupId(inti){
返回i;
}
@凌驾
公共长getChildId(inti,inti1){
返回i1;
}
@凌驾
公共布尔表ID(){
返回false;
}
@凌驾
公共视图getGroupView(int i、布尔b、视图视图、视图组视图组){
String headerTitle=(String)getGroup(i);
{
LayoutFlater充气器=(LayoutFlater)this.context.getSystemService(context.LAYOUT\u充气器\u服务);
视图=充气机。充气(R.layout.list\u组,空);
}
TextView lblListHeader=(TextView)view.findViewById(R.id.lblListHeader);
lblListHeader.setTypeface(null,Typeface.BOLD);
lblListHeader.setText(标题);
如果(i==0)
lblListHeader.setBackgroundColor(Color.parseColor(“#ca4e18”));
如果(i==0)
lblListHeader.setTextColor(Color.parseColor(“#EEEEEE”);
其他的
lblListHeader.setBackgroundColor(Color.parseColor(“#EEEEEE”);
返回视图;
}
@凌驾
公共视图getChildView(int i、int i1、布尔b、视图视图、视图组视图组){
最后一个字符串childText=(String)getChild(i,i1);
如果(视图==null){
LayoutFlater充气器=(LayoutFlater)this.context.getSystemService(context.LAYOUT\u充气器\u服务);
视图=充气机。充气(R.layout.list_item2,空);
}
TextView txtListChild=(TextView)view.findViewById(R.id.lblListItem);
setText(childText);
返回视图;
}
@凌驾
公共布尔值是可选择的(int i,int i1){
返回true;
}
}

其中一项活动:

公共课堂活动扩展了课堂活动{

private ExpandableListView listView;
private ExpandableListAdapter listAdapter;
private List<String> listDataHeader;
private HashMap<String,List<String>> listHash;

@Override
protected void onCreate(Bundle savedInstanceState) {

    
    // super oncreate/
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_activity);

    listView = (ExpandableListView)findViewById(R.id.lvExp);
    initData();
    listAdapter = new ExpandableListAdapter(this,listDataHeader,listHash);
    listView.setAdapter(listAdapter);

    // Setup FAB to open EditorActivity
   Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            Intent intent = new Intent(ace.this, DrugDosagesActivity.class);
            startActivity(intent);
        }
    });

}


private void initData() {
    listDataHeader = new ArrayList<>();
    listHash = new HashMap<>();

    listDataHeader.add("text");
    listDataHeader.add("2nd text");
    listDataHeader.add("3rd text");
    listDataHeader.add("4th text");
    listDataHeader.add("....");


    List<String> zero = new ArrayList<>();
    zero.add("text, but this needs to be a figure" );

    List<String> first = new ArrayList<>();
    first.add("first text");

    List<String> second = new ArrayList<>();
    second.add("second text");

    List<String> third = new ArrayList<>();
    third.add("third text");

    List<String> fourth = new ArrayList<>();
    fourth.add("fourth text.");

    listHash.put(listDataHeader.get(0), zero);
    listHash.put(listDataHeader.get(1), first);
    listHash.put(listDataHeader.get(2), second);
    listHash.put(listDataHeader.get(3), third);
    listHash.put(listDataHeader.get(4), fourth);


}
私有可扩展listView listView;
私有可扩展listAdapter listAdapter;
私有列表listDataHeader;
私有哈希映射列表哈希;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//超级oncreate/
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u activity);
listView=(ExpandableListView)findViewById(R.id.lvExp);
initData();
listAdapter=新的ExpandableListAdapter(这个,listDataHeader,listHash);
setAdapter(listAdapter);
//设置FAB以打开编辑器活动
Button Button=(Button)findViewById(R.id.Button);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
意向意向=新意向(ace.this,drugdosactivity.class);
星触觉(意向);
}
});
}
私有void initData(){
listDataHeader=新的ArrayList();
listHash=新的HashMap();
添加(“文本”);
添加(“第二个文本”);
添加(“第三个文本”);
添加(“第四个文本”);
添加(“..”);
List zero=新的ArrayList();
添加(“文本,但这需要是一个数字”);
List first=new ArrayList();
首先,添加(“第一个文本”);
第二个列表=新的ArrayList();
第二,添加(“第二文本”);
第三个列表=新的ArrayList();
第三,添加(“第三文本”);
第四个列表=新的ArrayList();
第四条添加(“第四条案文”);
put(listDataHeader.get(0),零);
put(listDataHeader.get(1),第一个);
put(listDataHeader.get(2),秒);
put(listDataHeader.get(3),第三个);
put(listDataHeader.get(4),第四个);
}

}

您可以使用imageView和textView为子级创建布局。在if语句中:if(i==0),将文本的可见性设置为GONE,将图像的可见性设置为VISIBLE。在Else语句中做相反的事情谢谢Roish!但这不会为两个视图中的一个留下间隙吗?如果将“可见性”设置为“不可见”,但从布局中“删除”视图,则会留下间隙。如果将一个视图与另一个视图的底部对齐,并将顶部视图设置为“消失”。第二个将“跳”起来。