如何为ListView中的每个项目创建特定响应



这是我的自定义ListView的代码,

public class MainActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Simple array with a list of my favorite TV shows
        String[] Teams = {"RealMadrid", "Barcelona", "Juventus", "BayernMunich"};
        ListAdapter theAdapter = new ArrayAdapter<String>(this, R.layout.row_layout, R.id.textView1, favoriteTVShows);
        theListView.setAdapter(theAdapter);
        ...
    }
}

我的点击侦听器在这里:

theListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
        String tvShowPicked = "You selected " + String.valueOf(adapterView.getItemAtPosition(i));
        Toast.makeText(MainActivity.this, tvShowPicked, Toast.LENGTH_SHORT).show();
    }
});

您可以看到,我对列表的所有项目都有共同的响应,如果我想对每个项目设置特定响应,例如,当我单击第一个项目时,它将打开网站,&amp;第二个项目开设不同的网站&amp;因此,在

有很多更优雅的方法可以做到这一点,但是要让您进入正确的轨道,您可以使用开关/案例。

theListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
        switch(adapterView.getItemAtPosition(i))
        {
            case 0:
            // open a webview
            break;
            case 1:
            // do something else
            break;
        }
    }
}

如果您想使其更健壮,那么ListView的对象可以设置类型,例如"网站"或"对话框","意图"或" fragment"等。然后将检查类型是什么,并基于类型做某事。当然,您的问题还有许多其他解决方案,但我认为这是我提供的最简单的答案,鉴于您提供的信息。

参数位置将从列表中具有单击项目的行号:

如果位置= 0->打开yahoo.com如果位置= 1->打开Google.com

最好在参数中使用switch wiith位置。

最新更新