Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在alistView.setOnItemClickListener(新建OnItemClickListener(){}中启动两个不同的意图_Android_Android Intent_Android Listview - Fatal编程技术网

Android 如何在alistView.setOnItemClickListener(新建OnItemClickListener(){}中启动两个不同的意图

Android 如何在alistView.setOnItemClickListener(新建OnItemClickListener(){}中启动两个不同的意图,android,android-intent,android-listview,Android,Android Intent,Android Listview,我是android新手,有点困惑。我有一个包含图像和文本的列表视图。如果我点击一个图像,它应该启动一个活动,如果我点击另一个活动的文本 化学需氧量: 在 onCrete(){ listView=getListView();} myBaseAdapterItemActivity=新的myBaseAdapterItemActivity( ItemActivity.this、placeNameList); setListAdapter(myBaseAdapterItemActivity); myBas

我是android新手,有点困惑。我有一个包含图像和文本的列表视图。如果我点击一个图像,它应该启动一个活动,如果我点击另一个活动的文本

化学需氧量: 在

onCrete(){
listView=getListView();}
myBaseAdapterItemActivity=新的myBaseAdapterItemActivity(
ItemActivity.this、placeNameList);
setListAdapter(myBaseAdapterItemActivity);
myBaseAdapterItemActivity.notifyDataSetChanged();
setTextFilterEnabled(true);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(适配器视图适配器、视图、,
内部位置,长id){
//我可以毫无问题地开始一项活动
//在xml文件中,我将image clicable设置为true。
//我想做的就是这样
if(view.getId()==R.id.imageId)
{
Intent Intent=新的Intent(这个,ImageActivity.class);
星触觉(意向);
}
else if(view.getID==R.id.textId)
{
Intent Intent=新的Intent(这个,TextActivity.class);
星触觉(意向);
}
}}
每当我点击图片时,它也不会出现在文本视图中。
您的
MyBaseAdapterItemActivity
setOnClickListener((OnCLickListener)mContext)
中的任何想法都将显示在ImageVIew和TextView中

在活动中,扩展
OnClickListener

根据列表项xml中的
v.getId()

,在
OnClick(View v)
中为set-android:OnClick=“onFirstLinkClick”和类似的图像视图编写
startActivity(Intent)
, 并在活动中使用以下方法

public void onFirstLinkClick(View V) {
}尝试使用以下代码。 您的适配器应该如下代码所示。然后,您的文本和图像单击将创建新活动

嗨,代码应该如下所示,希望这对你有帮助

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) 相反,在为列表编写onItemClickListener时,您可以在getview方法中的自定义适配器中对textview和imageview进行findviewbyid,然后在这两个适配器上设置onclick侦听器



2) 您可以使用getChildAt方法。。。。并检查哪个孩子是您的imageview,哪个孩子是您的textview。这是一个没有太多保证的解决办法。

在MyBaseAdapterItemActivity中的每个ImageView和TextView上设置onClickListener,您不必使用SetOnItemClickListener。您的列表中是否有一些可触摸的组件?请查看以下链接:。您的注释“In xml File I set for image clickable to true”表示您的图像获得焦点(用于单击事件)。您能将android:focusableInTouchMode=“false”添加到您的imageview吗?另外,你能检查一下你在view.getID()中是否得到了正确的ID吗?@Chor WaiChun你能为MyBaseAdapterItemACtivity提供一些代码吗?在主要活动中,我想你可以通过它的Rajesh4Uguys参考答案,只需参考getView方法,其他部分会让你感到困惑,我想你已经完成了其他部分。你看了视图的焦点了吗?(正如我所建议的)。我得到以下错误,它不允许我实现。很抱歉,格式不好,但由于回答时间的关系,我现在无法回答,所以我决定写一条评论。Any idea holder.imageMap.setOnClickListener(新OnClickListener(){@Override public void onClick(视图v){//TODO自动生成的方法存根意图=新意图((OnClickListener)mContenxt,ActivityName.class);//错误构造函数意图((OnClickListener)mContext,Classnot found>)is}//END baseadapter图像和文本都有一些共同点。这意味着通过单击它们中的每一个都应该带有一些标识符。holder.imageMap.setOnClickListener((OnClickListener)mContenxt);holder.textView.setOnClickListener((OnClickListener)mContenxt);但是我如何检查主活动中的哪个活动应该startholder.imageMap.setonClickListener(新onClickListener(){在onclick方法中,您可以传递需要打开的意图。作为意图I=新意图(getActivityContext,ImageActivity.class);getActivityContext.startActivity(I);它抛出了一个错误,我正在做完全相同的操作。在android.widget.AbsListView.obtainView(AbsListView.java:2461)如果再次出现错误,只需清理项目并运行,然后检查导致问题的行……我希望在单击时启动意图,这意味着如果我单击图像,则必须启动ImageActivity,如果单击文本,则必须启动TextActivity。但我无法在onClick()中启动活动我得到的错误如下:com.project.test.Adapters.MyBaseAdapterItemActivity.getView(MyBaseAdapterItemActivity.java:82)中的java.lang.NullPointerException位于android.widget.AblistView.GetainView(AblistView.java:2461)等等,所以它不允许我从这里下载完整的源代码Thnx,我今天稍后会尝试,您的工作非常完美,在我的例子中是mydat.imageView1.setOnClickListener(new OnClickListener(){@Override public void onClick(View v){//TODO自动生成的方法存根Toast.makeText(rContext,“image”,1000).show();Intent image=newintent(rContext,ImageActivity.class);startActivity(image);};thrwos错误:在android.widget.AbsListView.obtainView(AbsListView.java:2461)中,文本有效,但ImageView无效。我稍后将发送我的BaseAdapter类,因为现在由于论坛原因无法发送。
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;


            }

        }

}