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

时间:2015-05-04 14:18:36

标签: android 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;等等

2 个答案:

答案 0 :(得分:1)

有很多更优雅的方法可以做到这一点,但为了让你走上正确的轨道,你可以选择开关/箱。

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;
        }
    }
}

如果您想让它更加强大,列表视图的对象可以设置类型,例如“网站”,“对话框”或“#39” ;意图&#39;或&#39;片段&#39;然后,你会检查类型是什么,并根据类型做某事。当然,对于你的问题还有很多其他解决方案,但我认为这是我给出的最简单的答案,给出了你提供的信息。

答案 1 :(得分:0)

参数位置将包含列表中单击项的行号:

如果Position = 0 - >打开yahoo.com 如果Position = 1 - >打开google.com

最好在论证中使用开关和位置。