如果我在一个活动中有2个或更多列表视图,那么我该如何使用onclicklistener?我的意思是如何知道用户点击哪一个?
public void onItemClick(AdapterView parent, View v, int position, long id) {
}
上面的代码是我使用的,但是当我尝试使用另一个listview时,我找不到一种方法来检测单击哪个listview。
要解决这个问题的任何想法吗?
答案 0 :(得分:5)
在这种情况下,parent
是itemClick发起的listView。因此,您可以做的是为每个ListView保留一个成员变量,并将父项与这些成员进行比较,以查看哪个列表触发了点击。
所以这是一个简单的类,我的意思是:
public class MyTest extends Activity{
private ListView list1;
private ListView list2;
public void onCreate(Bundle b){
super.onCreate(b);
list1 = new ListView();
list2 = new ListView(); //or findViewById if you declared them in your layout
//the rest of your creation code here
}
public void onItemClick(AdapterView parent, View v, int position, long id) {
if(list1 == parent){
//handle list1 click
}else{
//handle list 2 click
}
}
}
答案 1 :(得分:2)
有两种方法可以做到。
实施OnItemClickListener
public class ListViewTest extends Activity implements OnItemClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public void onItemClick(AdapterView<?> arg0, View view, int arg2, long arg3) {
if(view ==myListView)1{
}
if(view ==myListView){
}
}
}
设置自己的监听器
myListView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO: click on second listview
}
});
答案 2 :(得分:0)
你可以这样做:
listView1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO: click on first listview
}
});
listView2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO: click on second listview
}
});
答案 3 :(得分:0)
非常简单, 只有一个列表可以作为ListActivity下的正式列表,这个列表(只有这个列表)应该有特殊列表ID(@android:列表我认为)所以只需将其他列表的id设置为其他ID并设置它的setOnItemClickListener可以做任何你想做的事情。我目前正在使用一个包含2个listView和另一个列表片段的应用程序。