繁体   English   中英

Listview按钮单击侦听器不起作用

[英]Listview button click listener is not working

我正在使用adapter类为我的商品设置值。 每个项目都有一个+-按钮。 我有一个foodActivity Java类,该java类的activity_food布局和这些列表的list_view_layout 我已经在活动类中初始化了+-按钮。 activity_food启动时,应用程序崩溃。

这是我的商品清单图片

list_view_layout中的加号,减号和edittext-

 <Button android:id="@+id/minus" android:layout_width="35dp" android:layout_height="35dp" android:layout_below="@+id/foodname" android:layout_toEndOf="@+id/foodpic" android:text="-" android:textSize="12sp" /> <EditText android:id="@+id/quantity" android:layout_width="25dp" android:layout_height="30dp" android:layout_below="@+id/foodname" android:layout_toEndOf="@+id/minus" android:ems="10" android:inputType="number" android:textAlignment="center" android:background="@drawable/edittextbackground" android:text="0" /> <Button android:id="@+id/plus" android:layout_width="35dp" android:layout_height="35dp" android:layout_alignTop="@+id/quantity" android:layout_toEndOf="@+id/quantity" android:text="+" android:textSize="12sp" /> 

activity_food布局-

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.res.easyorder.foodActivity"> <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:divider="#ffff" android:dividerHeight="5dp"/> </RelativeLayout> 

我的适配器类-

 package com.res.easyorder; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import java.util.ArrayList; import java.util.zip.Inflater; public class MyAdapter extends ArrayAdapter<item> { int q_ty = 0; ArrayList<item> foodlist = new ArrayList<>(); public MyAdapter(Context context, int textViewResourceId, ArrayList<item> objects){ super(context, textViewResourceId, objects); foodlist = objects; } @Override public int getCount(){ return super.getCount(); } @Override public View getView(final int position, View convertView, ViewGroup parent){ View v = convertView; LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = inflater.inflate(R.layout.list_view_layout, null); ImageView foodpic = (ImageView) v.findViewById(R.id.foodpic); TextView foodname = (TextView) v.findViewById(R.id.foodname); TextView foodprice = (TextView) v.findViewById(R.id.foodprice); Button plus = (Button) v.findViewById(R.id.plus); final EditText quantity = (EditText) v.findViewById(R.id.quantity); Button minus = (Button) v.findViewById(R.id.minus); plus.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { item item = getItem(position); q_ty = Integer.parseInt(item.getQuantity()); q_ty = q_ty + 1; quantity.setText("" +q_ty); } }); foodname.setText(foodlist.get(position).getFoodName()); foodpic.setImageResource(foodlist.get(position).getFoodImage()); foodprice.setText("BDT: " +foodlist.get(position).getFoodPrice()); quantity.setText(foodlist.get(position).getQuantity()); return v; } } 

foodActivity Java代码。 加上减号onclicklistener的评论-

 package com.res.easyorder; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.Toast; import com.google.firebase.auth.FirebaseAuth; import java.util.ArrayList; public class foodActivity extends AppCompatActivity { private String type = null; int quantity = 0; private Button plus, minus; private EditText q_ty; ListView simplelist; ArrayList<item> foodlist = new ArrayList<>(); private FirebaseAuth firebaseAuth; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_food); firebaseAuth = FirebaseAuth.getInstance(); simplelist = (ListView) findViewById(R.id.listview); plus = (Button) findViewById(R.id.plus); minus = (Button) findViewById(R.id.minus); q_ty = (EditText) findViewById(R.id.quantity); type = getIntent().getExtras().getString("type"); if(type.equals("breakfast")) { foodlist.add(new item("Rooti",R.drawable.ruti,5)); foodlist.add(new item("Parata",R.drawable.porata,8)); foodlist.add(new item("Tandoor",R.drawable.tandoor,15)); foodlist.add(new item("Vegetable",R.drawable.sodji,10)); foodlist.add(new item("Daal",R.drawable.dal,10)); foodlist.add(new item("Omelet",R.drawable.dimvaji,15)); foodlist.add(new item("Singara",R.drawable.singara,8)); foodlist.add(new item("Samosa",R.drawable.samosa,10)); foodlist.add(new item("Puri",R.drawable.puri,5)); } MyAdapter myAdapter = new MyAdapter(this,R.layout.list_view_layout,foodlist); simplelist.setAdapter(myAdapter); /*plus.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //quantity = quantity + 1; //q_ty.setText(""+quantity); } }); minus.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (quantity==0) { //q_ty.setText(""+quantity); } else if (quantity>0) { quantity = quantity - 1; //q_ty.setText(""+quantity); } } });*/ } } 

您正面临此问题,因为Listview项目行xml文件上有加号减号按钮,并且在活动中找到了加号减号按钮。 您必须将点击侦听器放入适配器类

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

    ViewHolder holder;

    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.list_entry, null);
        holder = new ViewHolder();
        holder.quantity= (EditText) convertView.findViewById(R.id.quantity);
        holder.plus = (Button) convertView.findViewById(R.id.plus);
        holder.minus = (Button) convertView.findViewById(R.id.minus);
        convertView.setTag(holder);
    }
    else {
        holder = (ViewHolder) convertView.getTag();
    }

    Item item = getItem(position);

    holder.quantity.setText(item.getQuantity());

    holder.plus.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

        Item item = getItem(position); 
        q_ty = Integer.parseInt(item.getQuantity()); 
        q_ty = q_ty + 1; 
        quantity.setText("" +q_ty);
        item.setQuantity(q_ty);
        }
    });



    return convertView;
}

您必须在“ MyAdapter.getView(..)”方法中设置OnClicklistener,因为在此方法中将创建项目。 当前,在foodActivity.onCreate()方法中,对象plus,minus和q_ty为空。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM