• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

从ExpandableListView.OnChildClickListener获取值

java 来源:Tomasz Dzierżanowski 6次浏览

我想要获取此列表中被点击的子项的值,并将其作为键值对。但这个执行后:从ExpandableListView.OnChildClickListener获取值

expandableListView 
       .setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 
        @Override 
        public boolean onChildClick(
          ExpandableListView parent, View v, 
          int groupPosition, int childPosition, 
          long id) { 
         Intent i = new Intent(v.getContext(), NumerekActivity.class); 
View child_view = placowkaGrupaAdapter.getChildView(groupPosition, childPosition, false, v, parent); 
i.putExtra("key", child_view.toString()); 

我得到了一个错误:
我试图让这个列表的点击孩子的价值,并把它作为键值对。但在执行上述操作之后,我得到了一个错误。

02-12 23:07:38.869 15940-15940/net.dbcoder.kolejka.android E/AndroidRuntime: FATAL EXCEPTION: main Process: net.dbcoder.kolejka.android, PID: 15940 java.lang.IndexOutOfBoundsException: Invalid index 5, size is 0 at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) at java.util.ArrayList.get(ArrayList.java:308) at net.dbcoder.kolejka.android.adapters.PlacowkaGrupaAdapter.getChild(PlacowkaGrupaAdapter.java:62) at net.dbcoder.kolejka.android.adapters.PlacowkaGrupaAdapter.getChildView(PlacowkaGrupaAdapter.java:95) at net.dbcoder.kolejka.android.listaPlacowek$2.onChildClick(listaPlacowek.java:93)

难道是好方法吗?如何操作?

适配器类groupPosition,childPosition

public class PlacowkaGrupaAdapter extends BaseExpandableListAdapter { 

    private List<String> header_titles; 
    private HashMap<String,List<String>> child_items; 
    private Context ctx; 

    public PlacowkaGrupaAdapter(PlacowkaGrupa[] placowkaGrupas, Context ctx) { 
     List<String> header_titles = new ArrayList<>(); 
     HashMap<String,List<String>> child_items = new HashMap<>(); 


     for (PlacowkaGrupa placowkaGrupa : placowkaGrupas){ 
      header_titles.add(placowkaGrupa.getPlacowka().getNazwa_placowki()); 
      child_items.put(placowkaGrupa.getPlacowka().getNazwa_placowki(),placowkaGrupa.getNazwa_grupy()); 
     } 
     this.ctx = ctx; 
     this.header_titles = header_titles; 
     this.child_items = child_items; 

    } 

    @Override 
    public int getGroupCount() { 
     return header_titles.size(); 
    } 

    @Override 
    public int getChildrenCount(int groupPosition) { 
     return child_items.get(header_titles.get(groupPosition)).size(); 
    } 

    @Override 
    public Object getGroup(int groupPosition) { 
     return header_titles.get(groupPosition); 
    } 

    @Override 
    public Object getChild(int groupPosition, int childPosition) { 
     return child_items.get(header_titles.get(groupPosition)).get(childPosition); 
    } 

    @Override 
    public long getGroupId(int groupPosition) { 
     return groupPosition; 
    } 

    @Override 
    public long getChildId(int groupPosition, int childPosition) { 
     return childPosition; 
    } 

    @Override 
    public boolean hasStableIds() { 
     return false; 
    } 

    @Override 
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 
     String title = (String)this.getGroup(groupPosition); 
     if(convertView == null){ 
      LayoutInflater layoutInflater = (LayoutInflater) this.ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = layoutInflater.inflate(R.layout.headliny,null); 
     } 
     TextView textView = (TextView) convertView.findViewById(R.id.heading_item); 
     textView.setTypeface(null, Typeface.BOLD); 
     textView.setText(title); 
     return convertView; 
    } 

    @Override 
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { 
     String title = (String) this.getChild(groupPosition,childPosition); 
     if(convertView == null){ 
      LayoutInflater layoutInflater = (LayoutInflater) this.ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = layoutInflater.inflate(R.layout.chilitemy,null); 
     } 
     TextView textView = (TextView) convertView.findViewById(R.id.child_item); 
     textView.setText(title); 
     return convertView; 
    } 

    @Override 
    public boolean isChildSelectable(int groupPosition, int childPosition) { 
     return true; 
    } 
} 

值合适我通过显示测试了它的价值在另一个活动,他们符合我的list.So选择唯一的事情就是如何正确的呼叫转接方法或获取以某种方式选择这些值。

适配器是用空白的对象集声明的,但是加载器添加它们并列出显示的内容确实很好。也许这两件事情是分开的我的意思是展示事物和底层价值……我在这里很困惑。

placowkaGrupaAdapter = new PlacowkaGrupaAdapter(new PlacowkaGrupa[]{},this); 
     expandableListView.setAdapter(placowkaGrupaAdapter); 
     getLoaderManager().initLoader(0, null, this); 

===========解决方案如下:

从您的日志似乎placowkaGrupaAdapter没有任何孩子的意见都没有。 (无效的索引5,大小为0)

我建议确保适配器的所有初始化都在此发生之前执行。

另外,在我看来,从这小部分代码中,您可以简单地使用View视图函数参数。

如果您要提供更多代码或详细说明此代码的用途,我很乐意提供帮助。

但是,这些是我可以根据此代码给出的建议。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)