私はアンドロイドに新しいです、そして、この問題の解決のために数週間グーグルグーグルしています。本文にスピナーがあり、断片のスクロールビューにある拡張リストの先頭にテキストフィールドがあります。ヘッダーのテキストは正しく表示されますが、子ビューを表示/非表示にするとスピナー値が変わります。拡張リストビューのスピナーは、値が混ざり合っています
私は何が間違っているのか分かりません。私はここで何か助けていただければ幸いです。あなたはスピナーからタグにアクセスしようとしているが、あなたは、ExpandedListView
(parent
)にないスピナーのタグを設定している、スピナー、選択された値については
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
アダプタの値は、正しい場所から来ているようです。ヘッダー値が重複していない限り、アダプター値の問題の原因がわかりません。 –