Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.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
Java 如何为自定义列表视图使用intent和bundle_Java_Android_Listview - Fatal编程技术网

Java 如何为自定义列表视图使用intent和bundle

Java 如何为自定义列表视图使用intent和bundle,java,android,listview,Java,Android,Listview,我是android应用程序开发新手。。我正在尝试为自定义列表视图中的按钮单击创建新活动…(即)我想为列表视图项中使用的按钮添加单击事件。如何为列表项中的按钮提供单击事件。我试图使用intent和bundle为两个不同的活动传递数据。但是如果我使用intent,那么它对我来说就不能正常工作。。谁能帮我解决这个问题 由于您没有发布任何代码,我将根据您的问题尽力给出答案。您需要在列表视图项中单击按钮事件。只需使用ListView的getView()方法中的按钮的findViewById()获取id,然

我是android应用程序开发新手。。我正在尝试为自定义列表视图中的按钮单击创建新活动…(即)我想为列表视图项中使用的按钮添加单击事件。如何为列表项中的按钮提供单击事件。我试图使用intent和bundle为两个不同的活动传递数据。但是如果我使用intent,那么它对我来说就不能正常工作。。谁能帮我解决这个问题

由于您没有发布任何代码,我将根据您的问题尽力给出答案。您需要在
列表视图
项中单击按钮事件。只需使用
ListView
getView()
方法中的按钮的
findViewById()
获取id,然后在该按钮上添加一个
onClickListener
。在此onClick事件内启动新活动

编辑: 根据您的评论更改行:

intent.putExtra("data",tvmername.getText().toString());
                startActivity(intent);
为此:

intent.putExtra("data",holder.tvmername.getText().toString());
                startActivity(intent);
ArrayAdapter的代码:

public class MovieAdapter extends ArrayAdapter {
    private List<CarrotModel> carrotModelList;
    private int resource;

    private LayoutInflater inflater;

    public MovieAdapter(Context context, int resource, List<CarrotModel> objects) {
        super(context, resource, objects);
        carrotModelList = objects;
        this.resource = resource;
        inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder holder=null;
        if (convertView == null) {
            holder=new ViewHolder();
            convertView = inflater.inflate(resource, null);

            holder.ivIcon = (ImageView) convertView.findViewById(R.id.ivIcon);

            holder.tvDiscount = (TextView) convertView.findViewById(R.id.tvDiscount);
           holder.tvmername = (TextView) convertView.findViewById(R.id.tvMerName);
            holder.tvDealDesc = (TextView) convertView.findViewById(R.id.tvDealDesc);
            holder.tvOfftoDis = (TextView) convertView.findViewById(R.id.tvOftoDis);
            holder.tvmeradd = (TextView) convertView.findViewById(R.id.tvmeradd);
            convertView.setTag(holder);
        }
        else {

            holder = (ViewHolder) convertView.getTag();
        }


        final ProgressBar progressBar;


        progressBar=(ProgressBar) convertView.findViewById(R.id.progressBar);


        ImageLoader.getInstance().displayImage(carrotModelList.get(position).getImageURL(), holder.ivIcon, new ImageLoadingListener() {
            @Override
            public void onLoadingStarted(String imageUri, View view) {
                progressBar.setVisibility(View.VISIBLE);
            }

            @Override
            public void onLoadingFailed(String imageUri, View view, FailReason failReason) {

                progressBar.setVisibility(View.GONE);
            }

            @Override
            public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                progressBar.setVisibility(View.GONE);
            }

            @Override
            public void onLoadingCancelled(String imageUri, View view) {
                progressBar.setVisibility(View.GONE);
            }
        });
        holder.tvDiscount.setText(carrotModelList.get(position).getDiscount() + "% OFF");
        holder.tvmername.setText(carrotModelList.get(position).getMerchantName());
        holder.tvDealDesc.setText(carrotModelList.get(position).getDealDescription());
        holder.tvOfftoDis.setText(carrotModelList.get(position).getOffersToDisplay());
        holder.tvmeradd.setText(carrotModelList.get(position).getMerchantAddress());

        Button Button1= (Button)  convertView.findViewById(R.id.button);

        Button1.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Intent intent=new Intent(getApplicationContext(), SecondActivity.class);
                intent.putExtra("data",holder.tvmername.getText().toString());
                startActivity(intent);
            }

        });


        return convertView;
    }

    class ViewHolder{
       private ImageView ivIcon;
        private TextView tvDiscount;
        private   TextView tvmername;
        private TextView tvDealDesc;
        private TextView tvOfftoDis;
        private  TextView tvmeradd;

    }


}
公共类电影适配器扩展了ArrayAdapter{
私人名单;
私有int资源;
私人充气机;
公共电影适配器(上下文、int资源、列表对象){
超级(上下文、资源、对象);
模型列表=对象;
这个资源=资源;
充气机=(布局充气机)获取系统服务(布局充气机服务);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
ViewHolder=null;
if(convertView==null){
holder=新的ViewHolder();
convertView=充气机。充气(资源,空);
holder.ivIcon=(ImageView)convertView.findViewById(R.id.ivIcon);
holder.tvDiscount=(TextView)convertView.findViewById(R.id.tvDiscount);
holder.tvmername=(TextView)convertView.findViewById(R.id.tvmername);
holder.tvdaldesc=(TextView)convertView.findViewById(R.id.tvdaldesc);
holder.tvOftoDis=(TextView)convertView.findViewById(R.id.tvOftoDis);
holder.tvmeradd=(TextView)convertView.findViewById(R.id.tvmeradd);
convertView.setTag(支架);
}
否则{
holder=(ViewHolder)convertView.getTag();
}
最终进度条进度条;
progressBar=(progressBar)convertView.findViewById(R.id.progressBar);
ImageLoader.getInstance().displayImage(ModelList.get(position).getImageURL(),holder.ivIcon,new ImageLoadingListener()){
@凌驾
public void onLoadingStarted(字符串imageUri,视图){
progressBar.setVisibility(View.VISIBLE);
}
@凌驾
public void onload失败(字符串imageUri、视图视图、失败原因){
progressBar.setVisibility(View.GONE);
}
@凌驾
public void onLoadingComplete(字符串imageUri、视图视图、位图加载图像){
progressBar.setVisibility(View.GONE);
}
@凌驾
public void onLoadingCancelled(字符串imageUri,视图){
progressBar.setVisibility(View.GONE);
}
});
holder.tvDiscount.setText(modellist.get(position.getDiscount()+“%OFF”);
holder.tvmername.setText(modellist.get(position.getMerchantName());
holder.tvdaldesc.setText(modellist.get(position.getDealDescription());
holder.tvoftodis.setText(modellist.get(position.getOffersToDisplay());
holder.tvmeradd.setText(modellist.get(position.getMerchantAddress());
Button Button1=(Button)convertView.findViewById(R.id.Button);
Button1.setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图v)
{
Intent Intent=新的Intent(getApplicationContext(),SecondActivity.class);
intent.putExtra(“数据”,holder.tvmername.getText().toString());
星触觉(意向);
}
});
返回视图;
}
类视图持有者{
私用ImageView ivIcon;
私人文本视图电视折扣;
私有文本视图tvmername;
私有文本视图tvdaldesc;
私有文本视图tvoftodis;
私有文本视图tvmeradd;
}
}
只需做以下更改即可

  Button1.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                    Intent intent=new Intent(getApplicationContext(), SecondActivity.class);
                    intent.putExtra("data",holder.tvmername.getText().toString());
                    startActivity(intent);
                }

            });

如果仍然存在NullPointerException,请发送资源文件。

首先添加一些代码,您如何尝试将onClick事件添加到项目您有两个问题,对于列表视图的使用,下面是代码:我尝试了该方法,但仍然不适用于我。。下面是代码:此代码运行正常吗?或者您是否收到任何错误(除了单击按钮之外)?代码运行正常。。单击按钮时,显示错误08-24 19:03:12.466 3833-3833/com.carrotmank.myapplication E/AndroidRuntime:FATAL EXCEPTION:main Process:com.carrotmank.myapplication,PID:3833 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.CharSequence android.widget.TextView.getText()”。我认为您在第二个Activity.java类中遇到此错误,必须有一些“文本视图”,您可以在其中设置作为意图传递的数据。检查“TextView”是否已正确初始化/或者可能是您没有正确获取id。让我知道你的问题是否解决了如果是文本意味着我可以像这样使用..intent.putExtra(“data”,holder.tvmername.getText().toString());如果我想传递ImageView,则不使用文本,而是指我必须使用的内容