как увеличить и уменьшить значение текстового представления при нажатии кнопки внутри listview в Android?

#java #android #listview #arraylist #android-arrayadapter

#java #Android #listview #arraylist #android-arrayadapter

Вопрос:

У меня есть представление списка. Внутри представления списка у меня есть текстовое представление, рядом с текстовым представлением есть две кнопки добавить и минус. Все эти вещи находятся внутри listview. Теперь я хочу, чтобы при нажатии кнопки добавить значение текстового представления было увеличено, а при нажатии кнопки минус значение текстового представления должно уменьшаться. я использовал класс адаптера массива для установки данных. пожалуйста, кто-нибудь, помогите мне.

 public class MainActivity extends ActionBarActivity {

    listviewAdapter listviewAdapter;
    List<Constant> constantlist = new ArrayList<Constant>();

     ListView list;
     String[] item;
     String[] quantity; 
     String[] price;


     //private ArrayList<HashMap<String,String>> list;

    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        item = new String[] {"Pizza", "Burger", "Chicken", "Biriyani", "Chapathi" , "Dosa", "Veg Pizza", "Chicken Burger", "Chicken Pizza", "pizza"};   


        quantity = new String[] {"2", "1", "3", "2", "5", "2", "4", "3", "1", "2" };


        price = new String[] {"$70.32", "$34.09", "56.763", "546.0", "23.09", "90.34", "23.76", "76.098", "45.09", "87.09"};



        for(int i=0;i<item.length;i  ){
            Constant constant = new Constant (item[i], quantity[i], price[i]);
            constantlist.add(constant);

        }




        list= (ListView)findViewById(R.id.listview);

        listviewAdapter = new listviewAdapter(this, R.layout.listview_row, constantlist);

        list.setAdapter(listviewAdapter); 


    }
}
  

а xml — это:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    android:id="@ id/relativeLayout1" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <TextView
        android:id="@ id/txt_item"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="First"
        android:layout_weight="2"
        android:textColor="#ffffff"
        android:textSize="20sp">

    </TextView>


     <Button 
        android:id="@ id/btn_redqty"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:text="-"
        android:focusable="false"
        android:textColor="#ffffff"
        android:textSize="20sp"
        />  



    <TextView
        android:id="@ id/txt_quantity"
        android:layout_width="40dp"
        android:layout_height="wrap_content"
        android:text="Second"

        android:textColor="#ffffff"
        android:gravity="center"
        android:textSize="20sp"
        >
    </TextView>





     <Button 
        android:id="@ id/btn_addqty"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:text=" "
        android:focusable="false"
        android:textColor="#ffffff"
        android:textSize="20sp"
       />   







    <TextView
        android:id="@ id/txt_price"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="Third"
        android:gravity="right"
        android:layout_weight="1"
        android:textColor="#ffffff"
        android:textSize="20sp">
    </TextView>

   <!--  <TextView
        android:id="@ id/FourthText"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="Fourth"
        android:layout_weight="1"
        android:textColor="#ffffff"
        android:gravity="center"
        android:textSize="15sp">
    </TextView> -->
</LinearLayout>
  

и класс адаптера является :

 public class listviewAdapter extends ArrayAdapter<Constant>{


    Context context;
    LayoutInflater inflater;
    List<Constant> constantlist;


    public listviewAdapter(Context context, int resourceId,
            List<Constant> worldpopulationlist) {
        super(context, resourceId, worldpopulationlist);
        //mSelectedItemsIds = new SparseBooleanArray();
        this.context = context;
        this.constantlist = worldpopulationlist;
        inflater = LayoutInflater.from(context);
    }

    private class ViewHolder{
        TextView item;
        TextView quantity;
        TextView price;
    }


    public View getView(int position,  View view, ViewGroup parent){
        final ViewHolder holder;

        if(view == null){
            holder = new ViewHolder();
            view=inflater.inflate(R.layout.listview_row, null);

            holder.item = (TextView) view.findViewById(R.id.txt_item);
            holder.quantity = (TextView) view.findViewById(R.id.txt_quantity);
            holder.price = (TextView) view.findViewById(R.id.txt_price);

            view.setTag(holder);        
    }else{
        holder = (ViewHolder) view.getTag();
    }

        holder.item.setText(constantlist.get(position).getItem());
        holder.quantity.setText(constantlist.get(position).getQuantity());
        holder.price.setText(constantlist.get(position)
                .getPrice());

        return view;

    }

    public List<Constant> getWorldPopulation() {
        return constantlist;
    }

}
  

Ответ №1:

В вашем файле макета.Добавьте метод onclick для кнопок.

 <Button 
    android:id="@ id/btn_addqty"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:text=" "
    android:focusable="false"
    android:textColor="#ffffff"
    android:textSize="20sp"
    android:onClick = "addQuantity"
/>   
  

В вашей деятельности. Добавьте метод addQuantity

 public void addQuantity(View v) {
     // v is the LinearLayout of your row . Get the textview and add the text              
}
  

Прочитайте здесь или здесь для получения дополнительной информации.