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