Как установить setOnTouchListener на элемент из адаптера?
У меня есть xml адаптер
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/for_bucket_adapter"
android:gravity="center"
android:layout_marginTop="8sp"
android:id="@+id/LAzhaa">
<TextView
android:id="@+id/textok1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="22sp"
android:textColor="@color/white"
android:layout_gravity="center"
android:gravity="center"/>
<TextView
android:id="@+id/textok2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="22sp"/>
<Button
android:layout_gravity="center"
android:layout_width="22sp"
android:layout_height="22sp"
android:layout_marginStart="5sp"
android:background="@drawable/plus"
android:id="@+id/plus"/>
<Button
android:layout_gravity="center"
android:layout_width="22sp"
android:layout_height="22sp"
android:layout_marginStart="5sp"
android:background="@drawable/minus"
android:id="@+id/minus"/>
</LinearLayout>
Его я устанавливаю через адаптер в основной xml ресурс. И как можно установить setOnTouchListene на весь лояут или на кнопки, когда я получить id в активности путем
Button b = findViewById(R.id.plus);
У меня выходит NullPointExeption. активность java:
public class BasketPage extends Activity implements OnTouchListener {
private static boolean costilek;
public List<Map<String, String>> pizzaNames;
public ListAdapter adapter;
public Button plusik;
public Button minusik;
public String name;
public String phoneNumber;
public String street;
public String home;
public String porch;
public String level;
public String apprt;
public String comment;
public boolean b;
WorkBD workBD;
MainActivity mainActivity;
public void culculateFprice(){
TextView FinalBuy = (TextView) findViewById(R.id.buyText);
int Pprice = MainActivity.pepperoni.getFinalPrice();
int Cprice = MainActivity.calzone.getFinalPrice();
int QCprice = MainActivity.quattrostagioni.getFinalPrice();
int QFprice = MainActivity.quattroformaggi.getFinalPrice();
int Mprice = MainActivity.mexican.getFinalPrice();
int FinalPrice = Pprice + Cprice + QCprice + QFprice + Mprice;
FinalBuy.setText("Стоимось вашего заказа: " + FinalPrice + " руб.");
}
public void creator() {
pizzaNames = new ArrayList<>();
System.out.println(MainActivity.pepperoni.getCount());
if (MainActivity.pepperoni.getCount() != 0) {
Map<String, String> map = new HashMap<>();
map.put("text1", "Пепперони ");
map.put("text2", MainActivity.pepperoni.getCount() + " шт.");
pizzaNames.add(map);
}
if (MainActivity.calzone.getCount() != 0) {
Map<String, String> map = new HashMap<>();
map.put("text1", "Кальцоне ");
map.put("text2", MainActivity.calzone.getCount() + " шт.");
pizzaNames.add(map);
}
if (MainActivity.quattrostagioni.getCount() != 0) {
Map<String, String> map = new HashMap<>();
map.put("text1", "Четыре сезона ");
map.put("text2", MainActivity.quattrostagioni.getCount() + " шт.");
pizzaNames.add(map);
}
if (MainActivity.quattroformaggi.getCount() != 0) {
Map<String, String> map = new HashMap<>();
map.put("text1", "Четыре сыра ");
map.put("text2", MainActivity.quattroformaggi.getCount() + " шт.");
pizzaNames.add(map);
}
if (MainActivity.mexican.getCount() != 0) {
Map<String, String> map = new HashMap<>();
map.put("text1", "Мексиканская ");
map.put("text2", MainActivity.mexican.getCount() + " шт.");
pizzaNames.add(map);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bascket_page);
mainActivity= new MainActivity();
ListView listView = (ListView) findViewById(R.id.titles);
onButton();
culculateFprice();
workBD = new WorkBD(this);
listView.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if (costilek) {
onButton();
}
return true;
}
public void onButton(){
Log.i(TAG, "HEY I`M IN ON BUTTON");
creator();
BaseAdapter adapter;
ListView listView = (ListView) findViewById(R.id.titles);
String [] from = {"text1" , "text2"};
int [] to = {R.id.textok1 , R.id.textok2};
adapter = new CustomAdapter(this, pizzaNames, R.layout.adapter_backet, from, to);
if(costilek) {
listView.setAdapter(null);
adapter.notifyDataSetChanged();
}
try {
listView.setAdapter(adapter);
}
catch (NullPointerException e){}
culculateFprice();
costilek = false;
}
...
public static void Cotil(){
costilek = true;
}
}
адаптер:
public class CustomAdapter extends SimpleAdapter {
public int i = 1;
public CustomAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View inflatedLayout = super.getView(position, convertView, parent);
Button plus = inflatedLayout.findViewById(R.id.plus);
Button minus = inflatedLayout.findViewById(R.id.minus);
final ArrayList<String> Pizzas = new ArrayList<>();
if (MainActivity.pepperoni.getCount() != 0)
Pizzas.add("pizza1");
if (MainActivity.calzone.getCount() != 0)
Pizzas.add("pizza2");
if (MainActivity.quattrostagioni.getCount() != 0)
Pizzas.add("pizza3");
if (MainActivity.quattroformaggi.getCount() != 0)
Pizzas.add("pizza4");
if (MainActivity.mexican.getCount() != 0)
Pizzas.add("pizza5");
plus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i(TAG, "Button was clicked for list item " + position);
boolean b = true;
int i = 0;
while (b) {
i++;
String j = "pizza" + i;
if (j.equals(Pizzas.get(position))) {
b = false;
if (i == 1) {
int y = MainActivity.pepperoni.getCount();
MainActivity.pepperoni.setCount(y + 1);
BasketPage.Cotil();
}
if (i == 2) {
int y = MainActivity.calzone.getCount();
MainActivity.calzone.setCount(y + 1);
BasketPage.Cotil();
}
if (i == 3) {
int y = MainActivity.quattrostagioni.getCount();
MainActivity.quattrostagioni.setCount(y + 1);
BasketPage.Cotil();
}
if (i == 4) {
int y = MainActivity.quattroformaggi.getCount();
MainActivity.quattroformaggi.setCount(y + 1);
BasketPage.Cotil();
}
if (i == 5) {
int y = MainActivity.mexican.getCount();
MainActivity.mexican.setCount(y + 1);
BasketPage.Cotil();
}
}
}
}
});
minus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i(TAG, "Button was clicked for list item " + position);
boolean b = true;
int i = 0;
while (b) {
i++;
String j = "pizza" + i;
if (j.equals(Pizzas.get(position))) {
b = false;
if (i == 1) {
int y = MainActivity.pepperoni.getCount();
MainActivity.pepperoni.setCount(y - 1);
BasketPage.Cotil();
}
if (i == 2) {
int y = MainActivity.calzone.getCount();
MainActivity.calzone.setCount(y - 1);
BasketPage.Cotil();
}
if (i == 3) {
int y = MainActivity.quattrostagioni.getCount();
MainActivity.quattrostagioni.setCount(y - 1);
BasketPage.Cotil();
}
if (i == 4) {
int y = MainActivity.quattroformaggi.getCount();
MainActivity.quattroformaggi.setCount(y - 1);
BasketPage.Cotil();
}
if (i == 5) {
int y = MainActivity.mexican.getCount();
MainActivity.mexican.setCount(y - 1);
BasketPage.Cotil();
}
}
}
}
});
return inflatedLayout;
}
}