Android PopupWindow 没有显示可扩展的 ListView?
Android PopupWindow did not Show Expandable ListView?
Popup window 没有显示Expandable ListView,我用Hasmap数组列表解析JSON API。完美地我得到了值并分配给 ArrayList.Please 指导我解决这个问题。为什么 PopWindow 没有提前显示 ExpandableListView.Thanks。
public class UserProfile_Add_Education extends AppCompatActivity implements View.OnClickListener{
private EditText edTxt_region,edTxt_orgnicat,edTxt_qualifprov,edTxt_titlequalifi,edTxt_ncea,edTxt_elaboratequalif,edTxt_qualifcat,
edTxt_qualifsubcat,edTxt_startdate,edTxt_endate,edTxt_edu_status;
private NestedScrollView nscrl_addeducation;
private Calendar mCalendar;
String upkeyvalues="";
private DisplayMetrics outMetrics;
private boolean isPortrait;
private int screenHeight;
private int screenWidth;
PopupWindow mPopUpMaster;
private PopupWindow mpopup;
ArrayList<HashMap<String, String>> hs_EduStatus_ArrLst = new ArrayList<HashMap<String, String>>();
HashMap<String,List<String>> hashMap = new HashMap<String, List<String>>();
List<String>list = new ArrayList<String>();
ExpandableListAdapter expandableListAdapter;
List<String> expandableListTitle;
HashMap<String, List<String>> expandableListDetail= new HashMap<String, List<String>>();
private ProgressDialog progress;
final int HAND_EDU =1;
final int HAND_ORG_SUB =2;
final int HAND_QLFY_SUB =3;
private int qulifyCatId,regionalId,orgId,qulifyProviderId;
ExpandableListView expListView;
CheckBox chkChild,chkParent;
Button btnSubmit;
TextView txtVw_selected;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile_education_add_layout);
getViewCasting();
}
@Override
public void onClick(View v) {
Intent redirectIntent;
switch(v.getId()){
case R.id.edTxt_qualifsubcat:
try {
PopupwithExpndLst ();
} catch (Exception e) {e.printStackTrace();}
break;
}
}
public void PopupwithExpndLst ()
{
try {
// inflating popup layout
View popUpView = getLayoutInflater().inflate(R.layout.pw_explist, null);
// Creation of popup
mpopup = new PopupWindow(popUpView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, true);
// Displaying popup
mpopup.showAsDropDown(popUpView, 0, 0);
// get the listview
expListView = (ExpandableListView) mpopup.getContentView().findViewById(R.id.lstExpList);
expandableListTitle = new ArrayList<String>(expandableListDetail.keySet());
expandableListAdapter = new CustomExpandableListAdapter(this, expandableListTitle, expandableListDetail);
expListView.setAdapter(expandableListAdapter);
} catch (Exception ex) { Log.i("Test", "Error is " + ex.getMessage());}
}
private class QualificationSubCat extends AsyncTask<Void, Void, Integer>{
String mQulifyCatId= String.valueOf(qulifyCatId);
@Override
protected void onPreExecute() {
progress = new ProgressDialog(UserProfile_Add_Education.this);
progress.setMessage("Loading ...");
progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progress.setIndeterminate(true);
progress.setCancelable(false);
progress.setProgress(0);
progress.show();
}
@Override
protected Integer doInBackground(Void... params) {
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("category_id", mQulifyCatId));
NetworkAccessLayer networkAccessLayer = new NetworkAccessLayer();
String jsonStr = networkAccessLayer.partnerSubCat(BusinessAccessLayer.SERVER_IP + "youth/getqualificationsubcategory", NetworkAccessLayer.POST, nameValuePairs,userToken);
mStatus = jsonStr;
} catch (Exception e) {e.printStackTrace();}
return 0;
}
@Override
protected void onPostExecute(Integer result) {
super.onPostExecute(result);
progress.dismiss();
mHandler.sendEmptyMessage(HAND_QLFY_SUB);
}
}
protected Handler mHandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(android.os.Message msg) {
switch (msg.what) {
case HAND_QLFY_SUB:
try {
if (mStatus != null) {
try {
JSONObject c = new JSONObject(mStatus);
String tempStr = c.getString("status").toString();
if (tempStr.equalsIgnoreCase("1") || tempStr.equalsIgnoreCase("true")) {
loadSubQualifationArrayValues(mStatus);
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
NetworkAccessLayer.showSnackBar(nscrl_addeducation, "No data found");
}
} catch (NullPointerException e) {
e.printStackTrace();
}
break;}
return false;
}
});
private void loadSubQualifationArrayValues(String responseStatus ) throws JSONException {
expandableListDetail.clear();
list.clear();
JSONObject jsonObject = new JSONObject(responseStatus);
String status = jsonObject.getString("status");
JSONObject dataObject = jsonObject.getJSONObject("data");
JSONArray jsonArray = dataObject.getJSONArray("subcategory_ids");
for (int i=0;i<jsonArray.length();i++){
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
JSONArray jsonArray1 = jsonObject1.getJSONArray("subsubcategory");
for (int j=0;j<jsonArray1.length();j++){
JSONObject jsonObject2 = jsonArray1.getJSONObject(j);
list.add(jsonObject2.getString("subcategory"));}
expandableListDetail.put(jsonObject1.getString("subcategory"),list);
System.out.println("Qfy_SubCat Size:"+expandableListDetail.size());
}
}
}
请保持冷静并阅读 myCode.I 这个问题的答案,我在这里添加所需的功能以在可扩展列表视图中显示 api 值。我使用 List 和 HashMap 来实现结果。希望它能帮助像我这样面临此类问题的人。谢谢。
下面是必要的变量、方法和Class,
public class ExpList_PopWindowsAns extends AppCompatActivity implements View.OnClickListener {
//required DataHandling components
List<String> list = new ArrayList<String>();
ExpandableListAdapter expandableListAdapter;
List<String> expandableListTitle;
HashMap<String, List<String>> expandableListDetail = new HashMap<String, List<String>>();
//oncreate
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layout);
EditText edTxt_qualifsubcat = (EditText) findViewById(R.id.edTxt_qualifsubcat);
edTxt_qualifsubcat.setOnclickListener(this);
getDisplayDetails();
if (getScreenWidth() > getScreenHeight()) {
isPortrait = false;
} else if (getScreenHeight() > getScreenWidth()) {
isPortrait = true;
}
}
//Display details
protected void getDisplayDetails() {
Display display = getWindowManager().getDefaultDisplay();
outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);
screenHeight = outMetrics.heightPixels;
screenWidth = outMetrics.widthPixels;
}
public int getWidthByPercentage(double i) {
int result = (int) ((i * screenWidth) / 100);
return result;
}
protected float getScreenWidth() {
return screenWidth;
}
protected float getScreenHeight() {
return screenHeight;
}
public int getHeightByPercentage(double d) {
int result = (int) ((d * screenHeight) / 100);
return result;
}
@Override
public void onClick(View v) {
Intent redirectIntent;
switch (v.getId()) {
case R.id.edTxt_qualifsubcat:
if (expandableListDetail.size() > 0) {
try {
PopupwithExpndLst();
} catch (Exception e) {
e.printStackTrace();
}
} else {
//Do your Stuff
}
break;
}
}
//Structue the Popwindow with Expandable List
//Calculate the width and height
public void PopupwithExpndLst() {
if (expandableListDetail.size() > 0) {
try {
// inflating popup layout
View popUpView = getLayoutInflater().inflate(R.layout.pw_explist, null);
// Creation of popup
mpopup = new PopupWindow(popUpView, isPortrait ? getHeightByPercentage(32) : getWidthByPercentage(50), isPortrait ? getHeightByPercentage(40) : getWidthByPercentage(30), true);
// Displaying popup
mpopup.showAtLocation(popUpView, Gravity.LEFT, getHeightByPercentage(5), getHeightByPercentage(100));
// get the listview
expListView = (ExpandableListView) mpopup.getContentView().findViewById(R.id.lstExpList);
expandableListTitle = new ArrayList<String>(expandableListDetail.keySet());
expandableListAdapter = new CustomExpandableListAdapter(this, expandableListTitle, expandableListDetail);
expListView.setAdapter(expandableListAdapter);
expListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) {
//To set the Text values in Editext
edTxt_qualifsubcat.setText(expandableListDetail.get(expandableListTitle.get(groupPosition)).get(childPosition));
//To set the Id for API purpose
qulifySubCatId = childPosition;
return false;
}
});
} catch (Exception ex) {
Log.i("Test", "Error is " + ex.getMessage());
}
} else {
//Do your Stuff
}
}
//Parse the JSON API using the Following Steps After Sucessfull AsyncTask API Call
private void loadSubQualifationArrayValues(String responseStatus) throws JSONException {
expandableListDetail.clear();//clear HashMap for avoiding the extra adding information
list.clear();//clear list for avoiding the extra adding information
JSONObject jsonObject = new JSONObject(responseStatus);
String status = jsonObject.getString("status");//place your api keys
JSONObject dataObject = jsonObject.getJSONObject("data");//place your api keys
JSONArray jsonArray = dataObject.getJSONArray("subcategory_ids");//place your api keys
for (int i = 0; i < jsonArray.length(); i++) {
list = new ArrayList<String>();
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
JSONArray jsonArray1 = jsonObject1.getJSONArray("subsubcategory");//place your api keys
for (int j = 0; j < jsonArray1.length(); j++) {
JSONObject jsonObject2 = jsonArray1.getJSONObject(j);
list.add(jsonObject2.getString("subcategory"));//place your api keys
}
expandableListDetail.put(jsonObject1.getString("subcategory"), list);//place your api keys
System.out.println("Qfy_SubCat Size:" + expandableListDetail.size());
}
}
}
CustomExpandableListAdapter
public class CustomExpandableListAdapter extends BaseExpandableListAdapter {
private Context context;
private List<String> expandableListTitle;
private HashMap<String, List<String>> expandableListDetail;
public CustomExpandableListAdapter(Context context, List<String> expandableListTitle,
HashMap<String, List<String>> expandableListDetail) {
this.context = context;
this.expandableListTitle = expandableListTitle;
this.expandableListDetail = expandableListDetail;
}
@Override
public Object getChild(int listPosition, int expandedListPosition) {
return this.expandableListDetail.get(this.expandableListTitle.get(listPosition))
.get(expandedListPosition);
}
@Override
public long getChildId(int listPosition, int expandedListPosition) {
return expandedListPosition;
}
@Override
public View getChildView(int listPosition, final int expandedListPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String expandedListText = (String) getChild(listPosition, expandedListPosition);
if (convertView == null) {
LayoutInflater layoutInflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.pw_list_item, null);
}
TextView expandedListTextView = (TextView) convertView
.findViewById(R.id.expandedListItem);
expandedListTextView.setText(expandedListText);
return convertView;
}
@Override
public int getChildrenCount(int listPosition) {
return this.expandableListDetail.get(this.expandableListTitle.get(listPosition))
.size();
}
@Override
public Object getGroup(int listPosition) {
return this.expandableListTitle.get(listPosition);
}
@Override
public int getGroupCount() {
return this.expandableListTitle.size();
}
@Override
public long getGroupId(int listPosition) {
return listPosition;
}
@Override
public View getGroupView(int listPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
String listTitle = (String) getGroup(listPosition);
if (convertView == null) {
LayoutInflater layoutInflater = (LayoutInflater) this.context.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.pw_list_group, null);
}
TextView listTitleTextView = (TextView) convertView.findViewById(R.id.listTitle);
//listTitleTextView.setTypeface(null, Typeface.BOLD);
listTitleTextView.setText(listTitle);
listTitleTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, isExpanded ? R.drawable.ic_expand_less_24dp : R.drawable.ic_expand_more_24dp, 0);
/*listTitleTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, isExpanded ? 0 : android.R.drawable.ic_menu_more, 0);
listTitleTextView.setText(getGroup(listPosition).toString());*/
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int listPosition, int expandedListPosition) {
return true;
}
}
再次感谢。我期待评论。
Popup window 没有显示Expandable ListView,我用Hasmap数组列表解析JSON API。完美地我得到了值并分配给 ArrayList.Please 指导我解决这个问题。为什么 PopWindow 没有提前显示 ExpandableListView.Thanks。
public class UserProfile_Add_Education extends AppCompatActivity implements View.OnClickListener{
private EditText edTxt_region,edTxt_orgnicat,edTxt_qualifprov,edTxt_titlequalifi,edTxt_ncea,edTxt_elaboratequalif,edTxt_qualifcat,
edTxt_qualifsubcat,edTxt_startdate,edTxt_endate,edTxt_edu_status;
private NestedScrollView nscrl_addeducation;
private Calendar mCalendar;
String upkeyvalues="";
private DisplayMetrics outMetrics;
private boolean isPortrait;
private int screenHeight;
private int screenWidth;
PopupWindow mPopUpMaster;
private PopupWindow mpopup;
ArrayList<HashMap<String, String>> hs_EduStatus_ArrLst = new ArrayList<HashMap<String, String>>();
HashMap<String,List<String>> hashMap = new HashMap<String, List<String>>();
List<String>list = new ArrayList<String>();
ExpandableListAdapter expandableListAdapter;
List<String> expandableListTitle;
HashMap<String, List<String>> expandableListDetail= new HashMap<String, List<String>>();
private ProgressDialog progress;
final int HAND_EDU =1;
final int HAND_ORG_SUB =2;
final int HAND_QLFY_SUB =3;
private int qulifyCatId,regionalId,orgId,qulifyProviderId;
ExpandableListView expListView;
CheckBox chkChild,chkParent;
Button btnSubmit;
TextView txtVw_selected;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile_education_add_layout);
getViewCasting();
}
@Override
public void onClick(View v) {
Intent redirectIntent;
switch(v.getId()){
case R.id.edTxt_qualifsubcat:
try {
PopupwithExpndLst ();
} catch (Exception e) {e.printStackTrace();}
break;
}
}
public void PopupwithExpndLst ()
{
try {
// inflating popup layout
View popUpView = getLayoutInflater().inflate(R.layout.pw_explist, null);
// Creation of popup
mpopup = new PopupWindow(popUpView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, true);
// Displaying popup
mpopup.showAsDropDown(popUpView, 0, 0);
// get the listview
expListView = (ExpandableListView) mpopup.getContentView().findViewById(R.id.lstExpList);
expandableListTitle = new ArrayList<String>(expandableListDetail.keySet());
expandableListAdapter = new CustomExpandableListAdapter(this, expandableListTitle, expandableListDetail);
expListView.setAdapter(expandableListAdapter);
} catch (Exception ex) { Log.i("Test", "Error is " + ex.getMessage());}
}
private class QualificationSubCat extends AsyncTask<Void, Void, Integer>{
String mQulifyCatId= String.valueOf(qulifyCatId);
@Override
protected void onPreExecute() {
progress = new ProgressDialog(UserProfile_Add_Education.this);
progress.setMessage("Loading ...");
progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progress.setIndeterminate(true);
progress.setCancelable(false);
progress.setProgress(0);
progress.show();
}
@Override
protected Integer doInBackground(Void... params) {
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("category_id", mQulifyCatId));
NetworkAccessLayer networkAccessLayer = new NetworkAccessLayer();
String jsonStr = networkAccessLayer.partnerSubCat(BusinessAccessLayer.SERVER_IP + "youth/getqualificationsubcategory", NetworkAccessLayer.POST, nameValuePairs,userToken);
mStatus = jsonStr;
} catch (Exception e) {e.printStackTrace();}
return 0;
}
@Override
protected void onPostExecute(Integer result) {
super.onPostExecute(result);
progress.dismiss();
mHandler.sendEmptyMessage(HAND_QLFY_SUB);
}
}
protected Handler mHandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(android.os.Message msg) {
switch (msg.what) {
case HAND_QLFY_SUB:
try {
if (mStatus != null) {
try {
JSONObject c = new JSONObject(mStatus);
String tempStr = c.getString("status").toString();
if (tempStr.equalsIgnoreCase("1") || tempStr.equalsIgnoreCase("true")) {
loadSubQualifationArrayValues(mStatus);
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
NetworkAccessLayer.showSnackBar(nscrl_addeducation, "No data found");
}
} catch (NullPointerException e) {
e.printStackTrace();
}
break;}
return false;
}
});
private void loadSubQualifationArrayValues(String responseStatus ) throws JSONException {
expandableListDetail.clear();
list.clear();
JSONObject jsonObject = new JSONObject(responseStatus);
String status = jsonObject.getString("status");
JSONObject dataObject = jsonObject.getJSONObject("data");
JSONArray jsonArray = dataObject.getJSONArray("subcategory_ids");
for (int i=0;i<jsonArray.length();i++){
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
JSONArray jsonArray1 = jsonObject1.getJSONArray("subsubcategory");
for (int j=0;j<jsonArray1.length();j++){
JSONObject jsonObject2 = jsonArray1.getJSONObject(j);
list.add(jsonObject2.getString("subcategory"));}
expandableListDetail.put(jsonObject1.getString("subcategory"),list);
System.out.println("Qfy_SubCat Size:"+expandableListDetail.size());
}
}
}
请保持冷静并阅读 myCode.I 这个问题的答案,我在这里添加所需的功能以在可扩展列表视图中显示 api 值。我使用 List 和 HashMap 来实现结果。希望它能帮助像我这样面临此类问题的人。谢谢。
下面是必要的变量、方法和Class,
public class ExpList_PopWindowsAns extends AppCompatActivity implements View.OnClickListener {
//required DataHandling components
List<String> list = new ArrayList<String>();
ExpandableListAdapter expandableListAdapter;
List<String> expandableListTitle;
HashMap<String, List<String>> expandableListDetail = new HashMap<String, List<String>>();
//oncreate
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layout);
EditText edTxt_qualifsubcat = (EditText) findViewById(R.id.edTxt_qualifsubcat);
edTxt_qualifsubcat.setOnclickListener(this);
getDisplayDetails();
if (getScreenWidth() > getScreenHeight()) {
isPortrait = false;
} else if (getScreenHeight() > getScreenWidth()) {
isPortrait = true;
}
}
//Display details
protected void getDisplayDetails() {
Display display = getWindowManager().getDefaultDisplay();
outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);
screenHeight = outMetrics.heightPixels;
screenWidth = outMetrics.widthPixels;
}
public int getWidthByPercentage(double i) {
int result = (int) ((i * screenWidth) / 100);
return result;
}
protected float getScreenWidth() {
return screenWidth;
}
protected float getScreenHeight() {
return screenHeight;
}
public int getHeightByPercentage(double d) {
int result = (int) ((d * screenHeight) / 100);
return result;
}
@Override
public void onClick(View v) {
Intent redirectIntent;
switch (v.getId()) {
case R.id.edTxt_qualifsubcat:
if (expandableListDetail.size() > 0) {
try {
PopupwithExpndLst();
} catch (Exception e) {
e.printStackTrace();
}
} else {
//Do your Stuff
}
break;
}
}
//Structue the Popwindow with Expandable List
//Calculate the width and height
public void PopupwithExpndLst() {
if (expandableListDetail.size() > 0) {
try {
// inflating popup layout
View popUpView = getLayoutInflater().inflate(R.layout.pw_explist, null);
// Creation of popup
mpopup = new PopupWindow(popUpView, isPortrait ? getHeightByPercentage(32) : getWidthByPercentage(50), isPortrait ? getHeightByPercentage(40) : getWidthByPercentage(30), true);
// Displaying popup
mpopup.showAtLocation(popUpView, Gravity.LEFT, getHeightByPercentage(5), getHeightByPercentage(100));
// get the listview
expListView = (ExpandableListView) mpopup.getContentView().findViewById(R.id.lstExpList);
expandableListTitle = new ArrayList<String>(expandableListDetail.keySet());
expandableListAdapter = new CustomExpandableListAdapter(this, expandableListTitle, expandableListDetail);
expListView.setAdapter(expandableListAdapter);
expListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) {
//To set the Text values in Editext
edTxt_qualifsubcat.setText(expandableListDetail.get(expandableListTitle.get(groupPosition)).get(childPosition));
//To set the Id for API purpose
qulifySubCatId = childPosition;
return false;
}
});
} catch (Exception ex) {
Log.i("Test", "Error is " + ex.getMessage());
}
} else {
//Do your Stuff
}
}
//Parse the JSON API using the Following Steps After Sucessfull AsyncTask API Call
private void loadSubQualifationArrayValues(String responseStatus) throws JSONException {
expandableListDetail.clear();//clear HashMap for avoiding the extra adding information
list.clear();//clear list for avoiding the extra adding information
JSONObject jsonObject = new JSONObject(responseStatus);
String status = jsonObject.getString("status");//place your api keys
JSONObject dataObject = jsonObject.getJSONObject("data");//place your api keys
JSONArray jsonArray = dataObject.getJSONArray("subcategory_ids");//place your api keys
for (int i = 0; i < jsonArray.length(); i++) {
list = new ArrayList<String>();
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
JSONArray jsonArray1 = jsonObject1.getJSONArray("subsubcategory");//place your api keys
for (int j = 0; j < jsonArray1.length(); j++) {
JSONObject jsonObject2 = jsonArray1.getJSONObject(j);
list.add(jsonObject2.getString("subcategory"));//place your api keys
}
expandableListDetail.put(jsonObject1.getString("subcategory"), list);//place your api keys
System.out.println("Qfy_SubCat Size:" + expandableListDetail.size());
}
}
}
CustomExpandableListAdapter
public class CustomExpandableListAdapter extends BaseExpandableListAdapter {
private Context context;
private List<String> expandableListTitle;
private HashMap<String, List<String>> expandableListDetail;
public CustomExpandableListAdapter(Context context, List<String> expandableListTitle,
HashMap<String, List<String>> expandableListDetail) {
this.context = context;
this.expandableListTitle = expandableListTitle;
this.expandableListDetail = expandableListDetail;
}
@Override
public Object getChild(int listPosition, int expandedListPosition) {
return this.expandableListDetail.get(this.expandableListTitle.get(listPosition))
.get(expandedListPosition);
}
@Override
public long getChildId(int listPosition, int expandedListPosition) {
return expandedListPosition;
}
@Override
public View getChildView(int listPosition, final int expandedListPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String expandedListText = (String) getChild(listPosition, expandedListPosition);
if (convertView == null) {
LayoutInflater layoutInflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.pw_list_item, null);
}
TextView expandedListTextView = (TextView) convertView
.findViewById(R.id.expandedListItem);
expandedListTextView.setText(expandedListText);
return convertView;
}
@Override
public int getChildrenCount(int listPosition) {
return this.expandableListDetail.get(this.expandableListTitle.get(listPosition))
.size();
}
@Override
public Object getGroup(int listPosition) {
return this.expandableListTitle.get(listPosition);
}
@Override
public int getGroupCount() {
return this.expandableListTitle.size();
}
@Override
public long getGroupId(int listPosition) {
return listPosition;
}
@Override
public View getGroupView(int listPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
String listTitle = (String) getGroup(listPosition);
if (convertView == null) {
LayoutInflater layoutInflater = (LayoutInflater) this.context.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.pw_list_group, null);
}
TextView listTitleTextView = (TextView) convertView.findViewById(R.id.listTitle);
//listTitleTextView.setTypeface(null, Typeface.BOLD);
listTitleTextView.setText(listTitle);
listTitleTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, isExpanded ? R.drawable.ic_expand_less_24dp : R.drawable.ic_expand_more_24dp, 0);
/*listTitleTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, isExpanded ? 0 : android.R.drawable.ic_menu_more, 0);
listTitleTextView.setText(getGroup(listPosition).toString());*/
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int listPosition, int expandedListPosition) {
return true;
}
}
再次感谢。我期待评论。