如何使用项目内的单个TextView扩展ListView

时间:2016-06-15 20:09:23

标签: android listview android-studio

我使用listview,因为我必须动态填充。就像常见问题解答一样,该项目显示了问题,一旦我们点击特定项目应展开的项目并显示文本视图。我不能使用ExpandableListView,因为ListView项中只有一个TextView。

Button

因此,如果用户点击第2项:

  Item 1           v
----------------------
  Item 2           v
----------------------
  Item 3           v

请帮忙!

这是我到目前为止所得到的!

  Item 1           v
----------------------
  Item 2           ^
  This is also a dynamic text but can be put in a single textview.
----------------------
  Item 3           v
----------------------

列表没有扩展到文本的全长..!

2 个答案:

答案 0 :(得分:1)

使用两个TextView创建布局。将可见性设置为第二个TextView为GONE。 实现AdapterView.OnItemClickListener接口并尝试使用以下代码。

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
     View secondTextView = view.findViewById(R.id.second_text_view);
     int visibility = secondTextView.getVisibility() == View.VISIBLE ? View.GONE : 
View.VISIBLE;
     secondTextView.setVisibility(visibility);
}

P.S。我还没有测试过,只是给出了一个主意。

答案 1 :(得分:0)

假设您使用的是自定义适配器,则可以根据条件检查将扩展视图的可见性从gone设置为visible。这可以在adpater中的getViewbindView方法中完成。作为一个例子,下面的代码查看上一个条目,如果商店不同,它使商店标题可见(否则消失),如果过道不同。这是使用listView's bindView方法编码的: -

        if(prevshop != cursor.getLong(shoppinglist_shopid_offset)) {
            shophdrll.setVisibility(View.VISIBLE);
            shophdrll.setBackgroundColor(ContextCompat.getColor(context, R.color.colorlistviewheading));
        } else {
            shophdrll.setVisibility(View.GONE);
        }
        if(prevaisle != cursor.getLong(shoppinglist_aisleid_offset)) {
            aislehdrll.setVisibility(View.VISIBLE);
            aislehdrll.setBackgroundColor(ContextCompat.getColor(context, R.color.colorlistviewsubheading));
        } else {
            aislehdrll.setVisibility(View.GONE);
        }