[android]为什么在我的应用程序方法 getChild、 getChildId 和 getChildView 不执行

我我我麻烦可展开列表视图的应用程序: 当我尝试在调试模式下运行我的应用程序,我看是不是执行的方法 getChild、 getChildId、 getChildView 和我不知道为什么。我明白此方法将执行后攻组项,但在我的案子这永远不会发生。我用这个适配器:

ExpandableListAdapter.java

<code>package it.bitmama.interactv4.adapter;</p><p>import it.bitmama.interactv4.R;</p><p>import java.util.List;</p><p>import java.util.Map;</p><p>import android.app.Activity;</p><p>import android.content.Context;</p><p>import android.graphics.Typeface;</p><p>import android.util.Log;</p><p>import android.view.LayoutInflater;</p><p>import android.view.View;</p><p>import android.view.ViewGroup;</p><p>import android.widget.BaseExpandableListAdapter;</p><p>import android.widget.TextView;</p><p>public class ExpandableListAdapter extends BaseExpandableListAdapter {</p><p>    private Activity context;</p><p>    private Map&lt;String, List&lt;String&gt;&gt; episodeData;</p><p>    private List&lt;String&gt; episodes;</p><p>    public ExpandableListAdapter(Activity context, List&lt;String&gt; episodes, Map&lt;String, List&lt;String&gt;&gt; episodeData) {</p><p>        this.context = context;</p><p>        this.episodeData = episodeData;</p><p>        this.episodes = episodes;</p><p>    }</p><p>    public Object getChild(int groupPosition, int childPosition) {</p><p>        Log.d("getChild", "" + episodeData.get(episodes.get(groupPosition)).get(childPosition));</p><p>        return episodeData.get(episodes.get(groupPosition)).get(childPosition);</p><p>    }</p><p>    public long getChildId(int groupPosition, int childPosition) {</p><p>        Log.d("getChildId", "" + childPosition);</p><p>        return childPosition;</p><p>    }</p><p>    public View getChildView(final int groupPosition, final int childPosition,</p><p>            boolean isLastChild, View convertView, ViewGroup parent) {</p><p>        Log.d("getChildView", "getChildView");</p><p>        final String episode = (String) getChild(groupPosition, childPosition);</p><p>        LayoutInflater inflater = context.getLayoutInflater();</p><p>        if (convertView == null) {</p><p>            convertView = inflater.inflate(R.layout.child_item, null);</p><p>        }</p><p>        TextView item = (TextView) convertView.findViewById(R.id.episodeTime);</p><p>//        ImageView add = (ImageView) convertView.findViewById(R.id.addCalendar);</p><p>//        add.setOnClickListener(new OnClickListener() {</p><p>//            public void onClick(View v) {</p><p>//                Log.d("EVENTI", "Aggiungere al calendario");</p><p>//</p><p>//                Calendar cal = Calendar.getInstance();</p><p>//                Intent intent = new Intent(Intent.ACTION_EDIT);</p><p>//                intent.setType("vnd.android.cursor.item/event");</p><p>//                intent.putExtra("beginTime", cal.getTimeInMillis());</p><p>//                intent.putExtra("allDay", false);</p><p>//                intent.putExtra("endTime", cal.getTimeInMillis() + 60 * 60 * 1000);</p><p>//                //intent.putExtra("title", title);</p><p>//                context.startActivity(intent);</p><p>//</p><p>//            }</p><p>//        });</p><p>        item.setText(episode);</p><p>        return convertView;</p><p>    }</p><p>    public int getChildrenCount(int groupPosition) {</p><p>        Log.d("getChildCount", "" + episodeData.get(episodes.get(groupPosition)).size());</p><p>        return episodeData.get(episodes.get(groupPosition)).size();</p><p>    }</p><p>    public Object getGroup(int groupPosition) {</p><p>        Log.d("getGroup", "" + episodes.get(groupPosition));</p><p>        return episodes.get(groupPosition);</p><p>    }</p><p>    public int getGroupCount() {</p><p>        Log.d("getGroupCount", "" + episodes.size());</p><p>        return episodes.size();</p><p>    }</p><p>    public long getGroupId(int groupPosition) {</p><p>        Log.d("getGroupId", "" +groupPosition);</p><p>        return groupPosition;</p><p>    }</p><p>    public View getGroupView(int groupPosition, boolean isExpanded,</p><p>            View convertView, ViewGroup parent) {</p><p>        Log.d("getGroupView", "getGroupView");</p><p>        String episodeName = (String) getGroup(groupPosition);</p><p>        if (convertView == null) {</p><p>            LayoutInflater infalInflater = (LayoutInflater) context</p><p>                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);</p><p>            convertView = infalInflater.inflate(R.layout.group_item,</p><p>                    null);</p><p>        }</p><p>        TextView item = (TextView) convertView.findViewById(R.id.episodeName);</p><p>        item.setTypeface(null, Typeface.BOLD);</p><p>        item.setText(episodeName.substring(0, 25));</p><p>        return convertView;</p><p>    }</p><p>    public boolean hasStableIds() {</p><p>        return true;</p><p>    }</p><p>    public boolean isChildSelectable(int groupPosition, int childPosition) {</p><p>        return true;</p><p>    }</p><p>}</p><p></code>

你可以看到我用一张地图,其中有信息为儿童和信息都在这张地图我检查,通过使用 Log.d (你可以看到在 episodeDate 有这一信息: episodeData content )。你认为它是错的吗?我试过很多的没有任何成功的解决方案。我希望你将能够帮我修复此问题。如果你需要 child_item.xml 你可以问我,我将在这里发布。

谢谢!

PS: 在我的代码有注释因为它是把一个事件到智能手机/平板电脑日历中,但在之前的下一步做我会解决问题。

编辑: 需要创建可扩展列表视图的活动我作出这样:

<code>final ExpandableListAdapter expListAdapter = new ExpandableListAdapter(this, groupList, episodeData);</p><p>exPrograms.setAdapter(expListAdapter);</p><p></code>

您可以在代码中看到我的代码的其他部分下面张贴在此编辑之前。

解决方法 1:

我经历过同样的问题而造成的不在活动中设置视图:

<code>public void onCreate(Bundle savedInstanceState) {</p><p>    super.onCreate(savedInstanceState);</p><p>    //setContentView(R.layout.main);</p><p>    view = new ExpandableListView(this);</p><p>    // do your stuff</p><p>    // set it as the view</p><p>    setContentView(view);</p><p>}</p><p></code>

显然,如果您忘记了向 setview contentview Android 仍作为调用组方法和由 caling getChildrenCount 还要求的儿童人数但是然后不着手的其他调用 getChild,getChildId,像……令人非常困惑。

希望这会有所帮助。

来源URL:http://www.itstrike.cn/Question/5b63b50c-1348-4d23-b09c-de988cb509a8.html