我正在尝试创建的应用有问题。我在过去的几天里做过很多谷歌搜索,但我似乎无法弄明白。
目标是在一个活动上拥有一个可扩展的列表视图,该活动总共有12个选项。点击后,这12个选项中的每一个都会将用户带到相同的布局,该布局有3个选项卡(名为星期一,星期三,星期五)。每个选项卡都有一个列表视图。到目前为止,这一切都适用于我的应用。现在我希望我的自定义适配器用不同的数据填充这3个列表视图(我打算硬编码到应用程序中,而不是大量的数据,所以不要认为它会减慢它),具体取决于可扩展列表视图中的项目点击了。
我遇到的问题是,我不知道如何让自定义适配器知道可扩展ListView上的哪个项目被点击,我不知道如何获取该信息,并填充三个不同的列表视图在3个不同的选项卡中有三组不同的数据..
数据非常简单,而且非常相似。每行将有3个文本框,一个包含一个单词,另外两个包含数字。它还有一个复选框
之前我已经制作了自定义适配器,但是它们用于单个列表视图,而且我不需要分离数据,所以它更容易。我不知道如何开始这个,我在谷歌搜索的尝试已经空了。
非常感谢任何帮助,即使只是指向正确方向的链接也会很棒!谢谢!
答案 0 :(得分:0)
使用(TabLayout
+ ViewPager
)组合为3个标签创建3个不同的片段。
然后在有权访问此Activity
和TabLayout
的{{1}}中调用此项,然后使用自定义列表视图动态添加标签。你去,一个简单的解决方案。
答案 1 :(得分:0)
您可以使用相同的CustomAdapter
填充所需的任何数据。因此,您可以在对象创建期间动态设置数据,而不是对CustomAdapter
中的数据进行硬编码。
这样,当您创建Adapter
时,您将传递它必须处理的数据。由于您的活动知道单击了哪个可扩展列表项,因此您可以向适配器发送不同的数据。
public class MyCustomAdapter extends BaseAdapter {
private String [] dataToBePopulated;
public MyCustomAdapter(String [] data) {
dataToBePopulated = data;
}
@Override
public int getCount() {
return dataToBePopulated != null ? dataToBePopulated.lenght : 0;
}
// ETC..
}
然后,当您创建适配器时,您可以发送您想要的数据:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
....
ListView listView = (ListView) findViewById(R.id.ID_OF_LISTVIEW);
MyCustomAdapter listViewAdapter;
if(/* CONDITION 1 */) {
listViewAdapter = new MyCustomAdapter(new String[] {"Data1 for Condition 1", "Data2 for Condition 1", "Data3 for Condition 1"})
} else if (/* CONDITION 2 */) {
listViewAdapter = new MyCustomAdapter(new String[] {"Data1 for Condition 2", "Data2 for Condition 2"})
} else {
listViewAdapter = new MyCustomAdapter(new String[] {"Data1 for Condition 3"})
}
listView.setAdapter(listViewAdapter);
....
}
}