使用customAdapter

时间:2015-12-16 15:12:44

标签: java android listview custom-adapter

这是我使用过的教程:http://www.tutorialsbuzz.com/2014/08/filter-custom-listviewbaseadapter.html

我实施了onItemClickListener

    OnItemClickListener myListViewClicked = new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            String member_name = countrylist.get(position).getName();
            // get Internet status
            isInternetPresent = cd.isConnectingToInternet();

            if (isInternetPresent) {
                if (member_name.equals("aa")) {
                    Intent i = new Intent(Listview.this, Start.class);
                    startActivity(i);
                    displayInterstitial();
            } else {
                prName.show();
            }
        }
    };
    lv.setOnItemClickListener(myListViewClicked);


}

所以,让我们假设我的原始列表是

Aa
BB
Ca
DD

我输入&#39; a&#39;在过滤器中,列表变为

Aa
Ca

但是当我点击Ca时,我会使用依赖于每个列表项的.equal的进一步操作重定向到BB。

我的列表和自定义适配器的代码与tutrial中的相同,但onclickitem监听器,我已经实现了它,所以我认为我遗漏了一些东西。我尝试搜索并发现了几个相同的问题,但没有人回答,每个都有自我答案,与我的不同,我无法将其应用到我的cusotm适配器。

2 个答案:

答案 0 :(得分:3)

主要是因为您正在直接访问数据集。

 String member_name = countrylist.get(position).getName();

在过滤过程中,您可能正在实例化,新Collection会覆盖您在Activity中使用的引用。

使用

String member_name = ((Country)parent.getItemAtPosition(position)).getName();

它会起作用。

如果parent.getItemAtPosition(position)已正确实施,

Adapter会访问getItem中的基础数据集

答案 1 :(得分:1)

  

您可以使用

String memberName=(YourObject)parent.getAdapter().get(postion).getName;

很容易。