我对android很新。我想实现一个列表视图。它包含一些列表项,当它们被单击时,它们应该展开以显示更多信息。但我无法找到办法
这是我的activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@+id/listview1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:clickable="True"
android:layout_alignParentTop="true"
android:divider="#000"
android:dividerHeight="0.5dp"
android:padding="7dp" >
</ListView>
</RelativeLayout>
listview.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="23dp"
android:layout_marginTop="20dp"
android:drawableLeft="@drawable/expand_icon"
android:drawablePadding="10dp"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:visibility="gone" />
</RelativeLayout>
我想填充textview2
以显示更多信息。以下是我的main_activity.java
public class MainActivity extends Activity {
ListView list;
String[] titles;
String[] desc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources res = getResources();
list = (ListView) findViewById(R.id.listview1);
titles = res.getStringArray(R.array.text_info);
desc = res.getStringArray(R.array.text_desc);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.listview, R.id.textView1, titles);
list.setAdapter(adapter);
}
的strings.xml
<string name="app_name">ListView</string>
<string name="hello_world">Hello world!</string>
<string-array name="text_info">
<item>Tutorial 1</item>
<item>Tutorial 2</item>
<item>Tutorial 3</item>
<item>Tutorial 4</item>
<item>Tutorial 5</item>
<item>Tutorial 6</item>
<item>Tutorial 7</item>
</string-array>
<string-array name="text_desc">
<item>Tutorial 1</item>
<item>Tutorial 2</item>
<item>Tutorial 3</item>
<item>Tutorial 4</item>
<item>Tutorial 5</item>
<item>Tutorial 6</item>
<item>Tutorial 7</item>
</string-array>
<string name="action_settings">Settings</string>
有关如何执行此操作的任何建议吗?
答案 0 :(得分:5)
当用户单击该项时,您只需将第二个文本视图的可见性设置为View.GONE和View.VISIBLE。首先实现OnItemClickListener。使用ExpandableListView进行这项简单的任务是过度的。
在OnItemClick处理程序中:
TextView textView = (TextView)arg1.findViewById(R.id.textView2);
if ( textView.getVisibility() == View.GONE)
{
//expandedChildList.set(arg2, true);
textView.setVisibility(View.VISIBLE);
}
else
{
//expandedChildList.set(arg2, false);
textView.setVisibility(View.GONE);
}
答案 1 :(得分:3)
您应该使用ExpandableListview而不是简单的ListView。
更新
按照本教程,它将为您提供帮助https://www.youtube.com/channel/UCbP2HeYGC3kfHjHLMPplZuQ 他将教您如何使用BaseAdapter使用ListView,这将增加您自己实现ExpandableListView的信心。
答案 2 :(得分:0)
有ExpandableListView可以调用此方法 https://www.journaldev.com/9942/android-expandablelistview-example-tutorial