2017-02-14 3 views
0

У меня есть пользовательский ListView, где он показывает изображения, и есть два ImageButtons, которые будут использоваться для увеличения и уменьшения, чтобы показать количество элементов, которые пользователь имеет.
У меня есть две проблемы: во-первых, приращение для одного ListView при нажатии будет отображаться 1, если я нажму кнопку инкремента в новом ListView вместо того, чтобы говорить 1, он показывает 2. Ive читал другие записи переполнения стека, но didn ' t достаточно получить, как заставить его работать, поэтому я хотел опубликовать свой код и посмотреть, сможет ли кто-нибудь помочь.Инкремент/сокращение пользовательского адаптера ListView

Что мне нужно сделать, это иметь его показать 1, когда я нажимаю на ListView, а затем, если я нажимаю на другой ListView, мне нужно, что один, чтобы начать с 1 вместо 2.

Второй вопрос что ListView циклически показывает и показывает то, что было ранее введено, например, если в первых 5 списках ListViews я нажимаю кнопку increment Button , как только на каждом ListView будет отображаться 1, 2, 3, 4, 5, то, если я прокручу вниз до 6-го ListView, покажет 1 седьмой покажет 2 и т. д.

Я новичок в программировании, и любая помощь будет очень оценена.
Если необходимы дополнительные коды, которые были написаны, пожалуйста, дайте мне знать.

package net.programmingparadise.duelysttracker; 

import android.content.Context; 
import android.support.annotation.NonNull; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageButton; 
import android.widget.ImageView; 
import android.widget.TextView; 

import java.util.ArrayList; 

/** 
* Created by josel on 1/20/2017. 
*/ 

public class ListArray extends ArrayAdapter<List> { 

    int quantity = 0; 

    public ListArray(Context context, ArrayList<List> list) { 
     super(context, 0, list); 
    } 

    @NonNull 
    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     View listItemView = convertView; 
     if (listItemView == null) { 
      listItemView = LayoutInflater.from(getContext()).inflate(
        R.layout.list_item, parent, false); 
     } 
     final List local_list = getItem(position); 

     ImageView cardImageView = (ImageView) listItemView.findViewById(R.id.cardImageView); 
     cardImageView.setImageResource(local_list.getmCardImage()); 
     ImageView spiritImageView = (ImageView) listItemView.findViewById(R.id.spiritImageView); 
     spiritImageView.setImageResource(local_list.getmSpiritImage()); 
     ImageView setImageView = (ImageView) listItemView.findViewById(R.id.setImageView); 
     setImageView.setImageResource(local_list.getmSetImage()); 
     final TextView quantityTextView = (TextView) listItemView.findViewById(R.id.itemCount); 

     ImageButton incrementButton = (ImageButton) listItemView.findViewById(R.id.increment); 


     incrementButton.setTag(local_list); 

     incrementButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       quantity++; 
       quantityTextView.setText(String.valueOf(quantity)); 


      } 
     }); 
     return listItemView; 


    } 
} 

ответ

1
public class ListArray extends ArrayAdapter<List> { 

    int quantity = 0; 

По сути, это делает то, что каждый адаптер имеет свое собственное количество. Где звучит так, будто вы хотите, чтобы каждая строка адаптера имела свое количество.

В этом случае, я думаю, что самое быстрое решение было бы использовать setTag, чтобы установить количество на listItemView, когда это нулевое быть 0. В противном случае, используйте getTag, чтобы получить количество этой строки.

public View getView(final int position, View convertView, ViewGroup parent) { 
    View listItemView = convertView; 
    if (listItemView == null) { 
     listItemView = LayoutInflater.from(getContext()).inflate(
       R.layout.list_item, parent, false); 
     listItemView.setTag(0); 
    } 
    final Integer quantity = (Integer) listItemView.getTag(); 
    // setTag again in onClick to quantity + 1 

Чтобы справиться с прокруткой, вы должны использовать «View обладателю» образец

+0

Im извините за все вопросы, но когда я ставлю в «окончательное количество Integer = listItemView.getTag();» он утверждает, что типы несовместимы с его утверждением, что один из них является Integer, а другой - объектом, как бы я исправлял это, есть ли что-то, что я могу прочитать, чтобы очистить его. – PrimordialRage

+0

Вы можете использовать IDE, чтобы исправить это для вас. Единицы - это объект, другой - целое. Вы захотите посмотреть «кастинг». Я не уверен, что это решение, которое вы ищете, хотя –

Смежные вопросы