这是我的自定义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;等等
答案 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
最好在论证中使用开关和位置。