【问题标题】:dynamical item list or list in item list in AndroidAndroid中的动态项目列表或项目列表中的列表
【发布时间】:2014-06-16 06:08:00
【问题描述】:

如何创建动态项目列表或另一个项目列表中的项目,如 BEETALK Android 软件


大家好。我正在寻找如何在 onClick 事件列表项上添加描述。 像联系人列表beetalk。
我想单击 item1 并查看 description1,当单击 item2 时,description1 隐藏和 description2 显示,如果 item1 单击并且 desc1 显示关闭 desc1,则结束。

第 0 步:

  • 项目1
  • 项目2

第 1 步:

  • 项目1
  • 描述1
  • 项目2

第 2 步:

  • 项目1
  • 项目2
  • desc2

第 3 步:

  • 项目1
  • 项目2

你有什么想法吗!

【问题讨论】:

  • 您是否尝试过使用对话框而不是在列表视图中添加描述
  • 我之前尝试过,但必须是动态项目列表的一种方式,用于在单击时添加和删除或在列表视图中移动项目以显示 desc。
  • 你试过ExpandableListView 吗?

标签: java android android-listview


【解决方案1】:

在您的列表适配器中创建一个setSelected(int position) 方法。并从您的onlistitemclick 调用它传递点击的位置。

如下编辑您的适配器代码。

 int selectedPosition = -1;
 public void setSelected(int position)
{
    selectedPosition= position;
    notifyDataSetChanged();
}

public View getView(int position, View convertView, ViewGroup parent)
{
    // your adapter code
    if(position==selectedPosition)
         description.setVisibility(View.VISIBLE);

    return convertView;
}

【讨论】:

  • 有什么办法可以在listview上动态添加描述项目!
  • 然后你可以试试这样的东西 mAdapterView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView> arg0, View arg1, int position, long arg3) { TextView description= new TextView(getActivity()); description.setText("description"); currentView = ((LinearLayout)arg0.getChildAt(position)); currentView.addView(description); }
  • 但是由于您想在 listView 中一次只显示一个描述,因此从以前的adapterView 中删除视图并仅将其保留为当前选择会很乏味。
【解决方案2】:

您需要使用ExpandableListView,例如here

  1. 为 Group view 和 Child view 定义两个 XML 布局,在每个布局中添加 TextView 以显示项目文本和描述。
  2. 在代码中,将项目文本设置为组的TextView描述设置为子TextView,所有子视图最初都将被隐藏。
  3. 使用ExpandableListViewcollapseGroup()expandGroup() 方法折叠或展开组。

例如,要在显示描述之前折叠展开的组,首先在 ListAdapter 类中定义 getGroupCount() 方法:

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

然后调用此方法折叠之前展开的组:

private void collapseAll() {
  int cnt = listAdapter.getGroupCount();
  for (int i = 0; i < cnt; i++){
     yourList.collapseGroup(i);
  }
}

编辑:

您可以将TagHandler 类与示例herehere 一起使用,通过以下方式在子TextView 上显示动态子列表:

Html.fromHtml("<ul><li>Item 1</li>...</ul>", null, new MyTagHandler()))

为此,您需要通过迭代动态 List/ArrayList 并制作/附加带有 string 数据的 HTML 标记,将子列表的项目文本转换为 HTML 文本。

【讨论】:

  • 我在可扩展列表视图之前尝试,但列表中有内部列表我想动态添加项目到列表并删除它。
  • 查看编辑,您可以使用 TagHandler 类在子视图上显示动态子列表,由您决定如何制作!
猜你喜欢
  • 2016-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多