我正在为城市创建一个可扩展的列表视图,但它不会扩展。我有另一个和这个差不多,但这个不会扩大,我花了很多时间试图看看什么是错的,不能再浪费了有人能指出问题吗?
我还调用了expandgroup(0),但它仍然没有扩展(好像没有什么可扩展的)。
XML
<ExpandableListView
android:id="@+id/judet"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:choiceMode="singleChoice"
android:groupIndicator="@null"
android:smoothScrollbar="true" >
</ExpandableListView>
在我的主课上
final AdapterJudet adapterJudet = new AdapterJudet(getApplicationContext());
ExpandableListView judet = (ExpandableListView) findViewById(R.id.judet);
judet.setAdapter(adapterJudet);
judet.setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
AdapterJudet.selected = AdapterJudet.judete[childPosition];
judet.collapseGroup(0);
return false;
}
});
适配器类
public class AdapterJudet extends BaseExpandableListAdapter {
Context ctx;
static String [] judete = {"Alba","Arad","Arges","Bacau","Bihor","Bistrita-Nasaud","Botosani","Brasov","Braila","Buzau","Caras-Severin","Cluj","Constanta","Covasna","Dambovita","Dolj","Galati","Giurgiu","Gorj","Hargita","Hunedoara","Ialomita","Maramures","Mehedinti","Mures","Neamt","Olt","Prahova","Satu-Mare","Salaj","Sibiu","Teleorman","Timis","Tulcea","Valcea","Vaslui","Vrancea","Bucuresti","Ilfov","Calarasi","Iasi","Suceava"};
static String selected = "Judet";
static int judetID = -1;
public AdapterJudet (Context ctx){
this.ctx = ctx;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v = convertView;
if (v == null) {
LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.item_layout, parent, false);
}
TextView itemName = (TextView) v.findViewById(R.id.itemName);
itemName.setText(judete[childPosition]);
judetID = childPosition;
return v;
}
@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return judete.length;
}
@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return 1;
}
@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v = convertView;
if (v == null) {
LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.group_layout, parent, false);
}
TextView groupName = (TextView) v.findViewById(R.id.groupName);
groupName.setText(selected);
return v;
}
@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;
}
}
最佳答案
我知道这个问题已经过去了,我希望这能帮助人们寻找答案。当您有可单击的小部件(如按钮、复选框)时,请为它们设置以下属性:
android:focusable="false"
我猜发生的情况是,这些小部件窃取了焦点(尽管这只在输入来自键盘或类似的东西时才重要),并自动阻止隐式单击侦听器(如group expand、collapse在不设置单击侦听器的情况下隐式发生)。
如果仍要维护小部件的focusable属性,此时唯一的选择似乎是在适配器对象的getview()方法中找到单个元素并设置显式单击侦听器。
关于android - Android ExpandableListView无法展开,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18401574/