我是Android新手,并且已经为此问题解决了数周的搜索问题。我在身体中有一个微调器,在扩展列表的头部有一个文本字段,它位于片段的滚动视图中。标题中的文本显示正确,但当我显示/隐藏子视图时,旋钮值会更改。Spinners在扩展列表视图中混淆了值
我不知道我在做什么错。我很感谢这里的任何帮助。
这里是适配器:
public class ExtendedListAdapter extends BaseExpandableListAdapter {
private Context ctx;
private LinkedHashMap<String, List<List<LinkedHashMap<String, String>>>> extendedListData;
private List<String> extendedListHeaders;
class Viewholder {
View rowView;
Spinner spnr;
TextView item1;
}
public ExtendedListAdapter(Context ctx, LinkedHashMap<String, List<List<LinkedHashMap<String, String>>>> extendedListData, List<String> extendedListHeaders) {
this.ctx = ctx;
this.extendedListData = extendedListData;
this.extendedListHeaders = extendedListHeaders;
}
@Override
public Object getChild(int parent, int child) {
return extendedListData.get(extendedListHeaders.get(parent)).get(child);
}
@Override
public long getChildId(int parent, int child) {
// TODO Auto-generated method stub
return child;
}
@Override
public View getChildView(int parentId, int childId, boolean lastChild, View convertView,
ViewGroup parentview) {
Viewholder v;
if (convertView == null) {
v = new Viewholder();
LayoutInflater inflator = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflator.inflate(R.layout.child_layout, parentview, false);
v.rowView = convertView;
v.rowView.setTag(v);
v.item1 = (TextView) convertView.findViewById(R.id.textLabel);
v.spnr = (Spinner) convertView.findViewById(R.id.spinner1);
}
else {
v = (Viewholder) convertView.getTag();
}
List<LinkedHashMap<String, String>> childListLinkedHashMap = (List<LinkedHashMap<String, String>>) getChild(parentId, childId);
LinkedHashMap<String, String> label = childListLinkedHashMap.get(0);
String[] items = new String[childListLinkedHashMap.size() - 1];
v.item1.setText(label.get("name"));
for (int i = 1; i < childListLinkedHashMap.size(); i++) {
items[i - 1] = childListLinkedHashMap.get(i).get("name");
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(ctx, android.R.layout.simple_spinner_dropdown_item, items);
v.spnr.setAdapter(adapter);
if (v.spnr.getTag() != null) {
v.spnr.setSelection((int) v.spnr.getTag());
}
v.spnr.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
parent.setTag(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
return convertView;
}
@Override
public int getChildrenCount(int arg0) {
return extendedListData.get(extendedListHeaders.get(arg0)).size();
}
@Override
public Object getGroup(int arg0) {
// TODO Auto-generated method stub
return extendedListHeaders.get(arg0);
}
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return extendedListHeaders.size();
}
@Override
public long getGroupId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getGroupView(int parent, boolean isExpanded, View convertView, ViewGroup parentview) {
// TODO Auto-generated method stub
String group_title = (String) getGroup(parent);
if (convertView == null) {
LayoutInflater inflator = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflator.inflate(R.layout.parent_layout, parentview, false);
}
TextView parent_textview = (TextView) convertView.findViewById(R.id.parent_txt);
ImageView imageView = (ImageView) convertView.findViewById(R.id.imageView);
parent_textview.setTypeface(null, Typeface.BOLD);
parent_textview.setText(group_title);
if (isExpanded) {
imageView.setImageResource(R.drawable.group_down);
} else {
imageView.setImageResource(R.drawable.group_up);
}
return convertView;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isChildSelectable(int arg0, int arg1) {
// TODO Auto-generated method stub
return false;
}
}
谢谢克里斯,这有帮助。但我的问题是关于纺纱者的价值观,而不是选定的价值观。这里是回购,因为从示例中可以更容易地看到我的意思:[email protected]:fermicoding/lhapp.git – user12869
适配器值看起来好像来自正确的位置。除非您有重复的标题值,否则我不知道适配器值的问题来自何处。 –