2016-06-14 2 views
0

ExpandableListView using this tutorial을 사용하여 물리적 상수 및 해당 정보를 표시하려고합니다. 자식, 부모 및 목록을 표시 할 활동에 대한 레이아웃을 만들었습니다. MyDataProvider 클래스의 HashMap에 데이터가 저장됩니다. 나는 이것 모두가 괜찮다고 믿고 일해야한다.사용자 지정 어댑터와 함께 ExpandableListView를 사용하려고하지만 표시 할 내용을 가져올 수 없습니다.

제가 생각하기에 문제가되는 부분은 어댑터이며 아래에 포함되어 있습니다. 문제는이 액티비티로 갈 때 앱이 충돌하지 않고 완전히 빈 흰색 화면 만 표시한다는 것입니다. 그 사람이 더 잘 알려주면 나는 또한 this tutorial 보았다.

package com.gmd.referenceapplication; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ExpandableListView; 
import android.widget.ListView; 

import com.gmd.referenceapplication.R; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.Map; 

public class CommonConstants extends AppCompatActivity { 
    View view; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_common_constants); 


     MyDataProvider dp = new MyDataProvider(); 

     ExpandableListView view; 
     view = (ExpandableListView) findViewById(R.id.expandableList); 
     HashMap constantsHashMap; 
     constantsHashMap = dp.getCommonMap(); 
     ArrayList constantsHashMapKeys = new ArrayList<String>(constantsHashMap.keySet()); 

     MyCustomAdapter adapter = new MyCustomAdapter(this, constantsHashMap, constantsHashMapKeys); 
     view.setAdapter(adapter); 










    } 
} 

나는 짓을했는지 : 내가 여기에 목록을 표시하려고 클래스를 포함하는 경우에도 유용 할 수처럼

package com.gmd.referenceapplication; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseExpandableListAdapter; 
import android.widget.TextView; 

import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

/** 
* Created by gmd on 6/13/2016. 
*/ 
public class MyCustomAdapter extends BaseExpandableListAdapter { 

    private Context context; 
    private HashMap<String,ListViewItem> constantsHashMap; 
    private List<String> constantList; 

    public MyCustomAdapter(Context context, HashMap<String, ListViewItem> hashMap, List<String> list){ 

     constantsHashMap = hashMap; 
     this.context = context; 
     this.constantList = list; 

    } 



    public View getChildView(int groupPosition, 
          int childPosition, 
          boolean isLastChild,View convertView, ViewGroup parent) { 
     String childTitle = (String) getChild(groupPosition, childPosition).toString(); 
     if(convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.child_layout, parent, false); 
     } 
     TextView childTextView = (TextView) convertView.findViewById(R.id.textViewChild); 
     childTextView.setText(childTitle); 
     return convertView; 


    } 

    @Override 
    public boolean isChildSelectable(int groupPosition, int childPosition) { 
     return false; 
    } 

    @Override 
    public int getGroupCount() { 
     return 0; 
    } 

    @Override 
    public int getChildrenCount(int groupPosition) { 
     return 0; 
    } 

    @Override 
    public String getGroup(int groupPosition) { 
     return constantList.get(groupPosition); 
    } 

    @Override 
    public Object getChild(int groupPosition, int childPosition) { 
     return constantsHashMap.get(this.constantList.get(groupPosition)); 
       } 


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

    @Override 
    public long getChildId(int groupPosition, int childPosition) { 
     return 0; 
    } 

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

    @Override 
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 
     String groupTitle = (String) getGroup(groupPosition); 
     if (convertView == null) { 
      LayoutInflater inflater = 
        (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.parent_layout, parent, false); 
     } 
     TextView parentTextView = (TextView) convertView.findViewById(R.id.textViewParent); 
     parentTextView.setText(groupTitle); 
     return convertView; 
     } 
    } 

것 같다 : 여기

내 어댑터입니다 이것에 대한 연구가 꽤 많이 있었고, 아직도 내가 뭘 잘못하고 있는지 잘 모르겠다. 그래서 나는 모든 도움에 감사 할 것이다. 감사!

답변

2

을 제공해야한다. 이 수는 그룹과 그 자식을 렌더링하는 데 사용됩니다. 시도해보십시오

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

@Override 
public int getChildrenCount(int groupPosition) { 
    return 1; // Looks like you have only one child in each group, change this if not 
} 
1

당신은 당신은 그룹과 아이 카운트에 0을 반환하는 올바른 그룹과 자녀 수 0 대신

@Override 
public int getGroupCount() { 
    return 0; 
} 

@Override 
public int getChildrenCount(int groupPosition) { 
    return 0; 
} 
관련 문제