如何在alistView.setOnItemClickListener中启动两个不同的Intent(new OnItemClickListener(){}

时间:2013-05-08 08:16:39

标签: android android-intent android-listview

我是android新手,有点困惑。我有一个带图像和文字的listView。在哪里,如果我点击一个图像,它应该开始一个活动,如果我点击文本另一个活动。

鳕鱼: 在

onCrete(){
listView = getListView();}

myBaseAdapterItemActivity = new MyBaseAdapterItemActivity(
                    ItemActivity.this, placeNameList);
            setListAdapter(myBaseAdapterItemActivity);

            myBaseAdapterItemActivity.notifyDataSetChanged();

            listView.setTextFilterEnabled(true);

listView.setOnItemClickListener(new OnItemClickListener() {


                @Override
                public void onItemClick(AdapterView<?> adapter, View view,
                        int position, long id) {

// One Activity I can start without any problem

// In xml File I set for image clicable to true.

// What I want to do is like this

if(view.getId() == R.id.imageId)
{
Intent intent = new Intent(this, ImageActivity.class);
startActivity(intent);
}
else if(view.getID == R.id.textId)
{
Intent intent = new Intent(this, TextActivity.class);
startActivity(intent);
}
}}

每当我点击Image时,它都不会出现在textView中。 任何想法

4 个答案:

答案 0 :(得分:0)

尝试使用以下代码。 你的适配器应该像下面的代码。然后单击文本和图像将创建新活动。

嗨,代码应该像下面希望这可以帮助你。

package com.example.listwithclick;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {


    ListView listView1;
    Activity activity;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        activity=this;

        listView1=(ListView)findViewById(R.id.listView1);
        listView1.setAdapter(new MyAddapter(MainActivity.this));

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
     class MyAddapter extends BaseAdapter {
            Context rContext;
            private LayoutInflater rInflater;

            public MyAddapter(Context c) {

                rInflater = LayoutInflater.from(c);

                rContext = c;

            }      

            public MyAddapter(Activity imagebinding) {
                // TODO Auto-generated constructor stub

                activity = imagebinding;        

                rContext = imagebinding;
                rInflater = LayoutInflater.from(imagebinding);
                rContext = imagebinding;
                rInflater = (LayoutInflater) activity
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);



            }

            @Override
            public int getCount() {
                // TODO Auto-generated method stub  


                return 10;
            }

            @Override
            public Object getItem(int arg0) {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public long getItemId(int position) {
                // TODO Auto-generated method stub
                return 0;
            }

            @Override
            public View getView(final int position, View convertView,
                    ViewGroup parent) {
                // TODO Auto-generated method stub
                convertView = rInflater.inflate(R.layout.child, null);
                final MyDat mydat = new MyDat();                

                mydat.textview = (TextView) convertView.findViewById(R.id.textView1);
                mydat.textview.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub

                        Toast.makeText(rContext, "text", 1000).show();
                        Intent image= new Intent(rContext,TextActivity.class);
                        startActivity(image);
                    }
                });

                mydat.imageView1=(ImageView)convertView.findViewById(R.id.imageView1);
                mydat.imageView1.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Toast.makeText(rContext, "image ", 1000).show();

                        Intent image= new Intent(rContext,ImageActivity.class);
                        startActivity(image);
                    }
                });

                return convertView;
            }

            class MyDat {


                TextView  textview;
                ImageView imageView1;


            }

        }

}

答案 1 :(得分:0)

它有两个解决方案: 1)而不是在onItemClickListener上编写列表,你可以在getview方法中使用自定义适配器中的textview和imageview查找,然后在两个上设置onclick监听器。

2)你可以使用getChildAt方法....并检查哪个孩子是你的imageview,哪个是你的textview。这是一个很好的保证。

答案 2 :(得分:-1)

MyBaseAdapterItemActivitysetOnClickListener((OnCLickListener)mContext)到ImageVIew和TextView。

在您的活动中,展开OnClickListener。 根据{{​​1}}

startActivity(Intent)中写下OnClick(View v)

答案 3 :(得分:-1)

在列表项xml中,对于set android:onClick =“onFirstLinkClick”,对于图像视图也是如此, 以及在您的活动中使用以下方法

public void onFirstLinkClick(View V) {

}