这是我的自定义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位置。