我在android中有一个列表视图。当您单击列表视图的项目时,将可见一个文本视图。当我再次单击列表视图的项目时,文本视图将消失。它将作为可扩展列表视图工作,但不使用可扩展列表视图。我怎么能在android中做到这一点............?
问问题
266 次
2 回答
0
创建一个适配器的arraylist并在列表视图中设置适配器我现在还没有编码,但你可以使用它来完成任务。
于 2013-05-27T09:52:03.030 回答
0
您在 android 演示中有一个示例 List6.java
看一下链接,这里我复制部分代码只是为了给你一个想法
public class List6 extends ListActivity
{
@Override
protected void onListItemClick(ListView l, View v, int position, long id)
{
((SpeechListAdapter)getListAdapter()).toggle(position);
}
//...
private class SpeechListAdapter extends BaseAdapter {
public View getView(int position, View convertView, ViewGroup parent) {
SpeechView sv;
if (convertView == null) {
sv = new SpeechView(mContext, mTitles[position], mDialogue[position], mExpanded[position]);
} else {
sv = (SpeechView)convertView;
sv.setTitle(mTitles[position]);
sv.setDialogue(mDialogue[position]);
sv.setExpanded(mExpanded[position]);
}
return sv;
}
//...
public void toggle(int position) {
mExpanded[position] = !mExpanded[position];
notifyDataSetChanged();
}
}
//...
private class SpeechView extends LinearLayout {
public SpeechView(Context context, String title, String dialogue, boolean expanded) {
super(context);
this.setOrientation(VERTICAL);
// Here we build the child views in code. They could also have
// been specified in an XML file.
mTitle = new TextView(context);
mTitle.setText(title);
addView(mTitle, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
mDialogue = new TextView(context);
mDialogue.setText(dialogue);
addView(mDialogue, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
mDialogue.setVisibility(expanded ? VISIBLE : GONE);
}
/**
* Convenience method to set the title of a SpeechView
*/
public void setTitle(String title) {
mTitle.setText(title);
}
/**
* Convenience method to set the dialogue of a SpeechView
*/
public void setDialogue(String words) {
mDialogue.setText(words);
}
/**
* Convenience method to expand or hide the dialogue
*/
public void setExpanded(boolean expanded) {
mDialogue.setVisibility(expanded ? VISIBLE : GONE);
}
private TextView mTitle;
private TextView mDialogue;
}
}
如您所见,它使用私有类来生成 textViews 在SpeechView
适配器的 getView 上仅显示在 上声明的标题private String[] mTitles
。
当您单击该标题时,它将布尔扩展设置为 true,刷新适配器,并且因为扩展属性为 true,所以显示声明的文本private String[] mDialogue
如果您在 SDK 管理器中下载 API 演示,则可以运行代码。
于 2013-05-27T10:20:12.780 回答