Android ExpandableListView无法展开 [英] Android ExpandableListView not expanding
问题描述
我正在为城市制作可扩展的列表视图,但不会扩展.我有另外一个几乎完全像这样的人,但是这个人不会扩展,我花了很多时间试图找出问题所在,并且再也不能浪费了,有人可以指出这个问题吗?
I'm making an expandable list view for cities but it wont expand. I have another one almost exactly like this one but this one wont expand and I've spent a lot of time trying to see what's wrong and cant afford to waste any more can someone please point out the problem?
我还调用了expandGroup(0),但是它仍然没有扩展(好像没有什么可以扩展的.)
I also called expandGroup(0) but it still didnt't expanded (as if there is nothing to expand).
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;
}
}
推荐答案
我知道这个问题已经存在了一段时间,希望这对寻求答案的人有所帮助.当您拥有可点击的小部件(如按钮,复选框)时,请为其设置以下属性:
I know it's been sometime since this question and I hope this helps someone looking for an answer. When you have clickable widgets (like button, checkbox), set the following property for them:
android:focusable="false"
我猜测会发生什么,这些小部件会抢占焦点(尽管这仅在输入来自键盘等输入时才重要)并自动阻止隐式单击侦听器(例如组展开,折叠隐式发生而不会设置点击监听器.
I'm guessing what happens is that these widgets steal the focus (although this matters only if input is coming in from a keyboard or something like that) and automatically blocks the implicit click listeners (like group expand, collapse happen implicitly without setting a click listener).
如果您仍想维护窗口小部件的focusable属性,那么此时唯一的选择似乎是在适配器对象的getView()方法中找到单个元素,并设置一个明确的单击侦听器.
If you still want to maintain the focusable property for the widget, the only alternative at this time seems to be to find the individual element in the getView() method of the adapter object and set an explicit click listener.
这篇关于Android ExpandableListView无法展开的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!