ListView项目打开新活动

时间:2014-03-22 10:57:29

标签: java android

为了学习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)是什么意思?我找不到合适的解释?

6 个答案:

答案 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) {
点击某些内容时会调用

onClickarg0(您可以将其称为viewarg0名称无用)就是您点击的内容。

此回调通常在ButtonsViews中使用,但不能与ListView一起使用。

如果您想在点击列表视图中的项目时打开某些内容,则应使用setOnItemClickListener

AdapterView.OnItemClickListener上你有AdapterView<?> parent, View view, int position, long id个参数。

来自android doc:

  • parent :发生点击的AdapterView。
  • 查看:已单击的AdapterView中的视图(这将是适配器提供的视图)
  • 位置:单击项目的位置(0表示第一个,1表示第二个等)。
  • id :已点击的项目的行ID。

当你写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);
        }
    }
});