为了学习Android开发,我还在学习几个教程,我正在努力开设新的活动。我只能打开一个活动,实际上我ListView
上的所有项目都打开了这个活动,这对于位置0(第一个项目)中的ListView
项目而言并不是全部。
我的代码如下:
// Listen for ListView Item Click
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(mContext, MyActivity1.class);
mContext.startActivity(intent);
}
});
return view;
}
正如你所看到的,MyActivity1.class打开正常,但如果我有一个名为MyActivity2的第二个类应该由位置1(第二个项目)中的listview项打开,该怎么办呢? (View arg0)是什么意思?我找不到合适的解释?
答案 0 :(得分:1)
使用listview OnItemClickListener
listView.setOnItemClickListener( new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
{
switch(positon)
{
case 0:
Intent intent = new Intent(mContext, MyActivity1.class);
mContext.startActivity(intent);
break;
case 1:
Intent intent = new Intent(mContext, MyActivity2.class);
mContext.startActivity(intent);
break;
}
}
});
position
是列表项的索引。因此,根据索引,您可以开始相应的活动。
没有开关案例的另一种方式
String[] classes ={"MyActivity1","MyActivity2"};
然后在onItemClick
String value = classes[position];
Class ourClass =Class.forName("packagename."+value);
Intent intent = new Intent(mContext,ourClass);
mContext.startActivity(intent);
答案 1 :(得分:1)
您可以使用项目点击监听器。
listviewOBJ.setOnItemClickListener( new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
{
}
});
您可以使用int position
来决定点击哪个项目。
答案 2 :(得分:1)
如果我的理解是正确的,那么这是你的答案:
对您的主要活动实施OnItemClickListener
:
然后将听众设置为列表视图:listView.setOnItemClickListener(this);
finallly:
private OnItemClickListener mOnGalleryClick = new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
switch(positon)
{
case 0:
Intent intent = new Intent(mContext, MyActivity1.class);
mContext.startActivity(intent);
break;
case 1:
Intent intent = new Intent(mContext, MyActivity2.class);
mContext.startActivity(intent);
break;
}
}
};
答案 3 :(得分:1)
public void onClick(View arg0) {
点击某些内容时会调用 onClick
,arg0
(您可以将其称为view
,arg0
名称无用)就是您点击的内容。
此回调通常在Buttons
,Views
中使用,但不能与ListView
一起使用。
如果您想在点击列表视图中的项目时打开某些内容,则应使用setOnItemClickListener
!
在AdapterView.OnItemClickListener
上你有AdapterView<?> parent, View view, int position, long id
个参数。
来自android doc:
当你写onItemClick
时,你应该记得你在匿名课堂上!
因此,当您需要将上下文传递给this
new Intent
pastesList.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Intent intent = null;
switch (position)
{
case 0:
intent = new Intent(ActivityClass.this, Class1.class);
break;
case 1:
intent = new Intent(ActivityClass.this, Class2.class);
break;
default:
return;
}
startActivity(intent);
}
});
这一行
ActivityClass.this
当您需要使用类ActivityClass
的实例时使用(您应该使用您的类名替换ActivityClass
)但是您无法使用此处引用的this
直接访问它new AdapterView.OnItemClickListener()
在您的代码中,您使用mContext
我不知道它是什么,但我认为它是一个背景。
下次您没有此变量时,请根据我的建议进行操作。
答案 4 :(得分:0)
您想要使用的是AdapterView.OnItemClickListener
。
final ListView list = ...;
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(mContext, MyActivity1.class);
if (position == 1) {
intent = new Intent(mContext, MyActivity2.class);
}
startActivity(intent);
}
});
答案 5 :(得分:0)
lv.setOnItemClickListener(n## Heading ##ew OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
if(position == 1) {
//code specific to first list item
Intent myIntent = new Intent(view.getContext(), Html_file1.class);
startActivityForResult(myIntent, 0);
}
if(position == 2) {
//code specific to 2nd list item
Intent myIntent = new Intent(view.getContext(), Html_file2.class);
startActivityForResult(myIntent, 0);
}
}
});