适用于3个列表视图的自定义适配器

时间:2016-07-24 15:13:07

标签: android android-arrayadapter android-adapter custom-adapter android-tablayout

我正在尝试创建的应用有问题。我在过去的几天里做过很多谷歌搜索,但我似乎无法弄明白。

目标是在一个活动上拥有一个可扩展的列表视图,该活动总共有12个选项。点击后,这12个选项中的每一个都会将用户带到相同的布局,该布局有3个选项卡(名为星期一,星期三,星期五)。每个选项卡都有一个列表视图。到目前为止,这一切都适用于我的应用。现在我希望我的自定义适配器用不同的数据填充这3个列表视图(我打算硬编码到应用程序中,而不是大量的数据,所以不要认为它会减慢它),具体取决于可扩展列表视图中的项目点击了。

我遇到的问题是,我不知道如何让自定义适配器知道可扩展ListView上的哪个项目被点击,我不知道如何获取该信息,并填充三个不同的列表视图在3个不同的选项卡中有三组不同的数据..

数据非常简单,而且非常相似。每行将有3个文本框,一个包含一个单词,另外两个包含数字。它还有一个复选框

之前我已经制作了自定义适配器,但是它们用于单个列表视图,而且我不需要分离数据,所以它更容易。我不知道如何开始这个,我在谷歌搜索的尝试已经空了。

非常感谢任何帮助,即使只是指向正确方向的链接也会很棒!谢谢!

2 个答案:

答案 0 :(得分:0)

使用TabLayout + ViewPager组合为3个标签创建3个不同的片段。
然后在有权访问此ActivityTabLayout的{​​{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);

        ....            
    }

}
相关问题