使用适配器的多个列表视图
Multiple Listview using Adapter
我是 android 的新手,我想知道如何在 android 中实现多个列表视图,所以我创建了一个包含 4 个字符串数组的应用程序
<string-array name="menu1">
<item>Break Fast</item>
<item>Lunch</item>
<item>Dinner</item>
</string-array>
<string-array name="breakfast">
<item>idly</item>
<item>dosa</item>
<item>pongal</item>
<item>puri</item>
<item>chapathi</item>
</string-array>
<string-array name="lunch">
<item>Meals</item>
<item>Curd Rice</item>
<item>Biriyani</item>
<item>Tomato Rice</item>
<item>Chapathi</item>
</string-array>
<string-array name="dinner">
<item>idly</item>
<item>dosa</item>
<item>parotta</item>
<item>puri</item>
<item>chapathi</item>
</string-array>
当我单击菜单 1 项 Breakfast 时,要在该列表视图中调用另一个列表视图,它要显示 Breakfast String Array 中相关的项目,同时要调用其他项目我们如何才能做到这一点
主要活动
public class MainActivity extends ActionBarActivity {
ListView listView;
String[] menus;
String[] breakfast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView= (ListView) findViewById(R.id.listView);
menus=getResources().getStringArray(R.array.menu1);
breakfast=getResources().getStringArray(R.array.breakfast);
ArrayAdapter<String> adapter= new ArrayAdapter<String>(this,R.layout.first_menu,R.id.textView,menus);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent= new Intent(MainActivity.this,MenuTwo.class);
}
});
}
在 onClick 侦听器中创建一个 switch case,更新菜单数据并调用 notifydatasetchanged :
switch(item)
{
case 0: menu = ....; break;
case 1: menu = ....; break;
...
}
adapter.notifydatasetChanged();
您还需要更新点击侦听器。更好的方法是使用新的 Listview 在点击时显示相关项目
看看这个教程,它们正在实现可扩展的列表视图。我想这就是你需要的。
http://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/
http://techlovejump.com/android-multilevel-listview-tutorial/
此外,您可以使用 github
中的 AndroidTreeView 项目
我是 android 的新手,我想知道如何在 android 中实现多个列表视图,所以我创建了一个包含 4 个字符串数组的应用程序
<string-array name="menu1">
<item>Break Fast</item>
<item>Lunch</item>
<item>Dinner</item>
</string-array>
<string-array name="breakfast">
<item>idly</item>
<item>dosa</item>
<item>pongal</item>
<item>puri</item>
<item>chapathi</item>
</string-array>
<string-array name="lunch">
<item>Meals</item>
<item>Curd Rice</item>
<item>Biriyani</item>
<item>Tomato Rice</item>
<item>Chapathi</item>
</string-array>
<string-array name="dinner">
<item>idly</item>
<item>dosa</item>
<item>parotta</item>
<item>puri</item>
<item>chapathi</item>
</string-array>
当我单击菜单 1 项 Breakfast 时,要在该列表视图中调用另一个列表视图,它要显示 Breakfast String Array 中相关的项目,同时要调用其他项目我们如何才能做到这一点
主要活动
public class MainActivity extends ActionBarActivity {
ListView listView;
String[] menus;
String[] breakfast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView= (ListView) findViewById(R.id.listView);
menus=getResources().getStringArray(R.array.menu1);
breakfast=getResources().getStringArray(R.array.breakfast);
ArrayAdapter<String> adapter= new ArrayAdapter<String>(this,R.layout.first_menu,R.id.textView,menus);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent= new Intent(MainActivity.this,MenuTwo.class);
}
});
}
在 onClick 侦听器中创建一个 switch case,更新菜单数据并调用 notifydatasetchanged :
switch(item)
{
case 0: menu = ....; break;
case 1: menu = ....; break;
...
}
adapter.notifydatasetChanged();
您还需要更新点击侦听器。更好的方法是使用新的 Listview 在点击时显示相关项目
看看这个教程,它们正在实现可扩展的列表视图。我想这就是你需要的。
http://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/
http://techlovejump.com/android-multilevel-listview-tutorial/
此外,您可以使用 github
中的 AndroidTreeView 项目