2

我在android中有一个列表视图。当您单击列表视图的项目时,将可见一个文本视图。当我再次单击列表视图的项目时,文本视图将消失。它将作为可扩展列表视图工作,但不使用可扩展列表视图。我怎么能在android中做到这一点............?

4

2 回答 2

0

创建一个适配器的arraylist并在列表视图中设置适配器我现在还没有编码,但你可以使用它来完成任务。

于 2013-05-27T09:52:03.030 回答
0

您在 android 演示中有一个示例 List6.java

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 回答