我我我麻烦可展开列表视图的应用程序: 当我尝试在调试模式下运行我的应用程序,我看是不是执行的方法 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<String, List<String>> episodeData;</p><p> private List<String> episodes;</p><p> public ExpandableListAdapter(Activity context, List<String> episodes, Map<String, List<String>> 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 有这一信息: )。你认为它是错的吗?我试过很多的没有任何成功的解决方案。我希望你将能够帮我修复此问题。如果你需要 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