3
Guys I’m having a problem on my list.
In my list is equal to the image below:
Arrows should consider the number of goals of the corresponding textView, but this is not the case. Regardless of the item I clicked on the arrow the increased value is always that of the last item. For example if I click on the arrow to increase the number of goals of Palmeiras, I end up increasing that of Paraná.
I think the problem is that I am not able to resume the list item on which the button was clicked and so the problem can only be in my Adapter.
Follows:
public class AdaptadorLista extends BaseAdapter {
private LayoutInflater mInflater;
private List<Jogo> itens;
private View viewSelecionada;
private int golsMandante=0;
private int golsVisitante=0;
private int gols=0;
private boolean btMaisPressionado = false;
private boolean btMenosPressionado = false;
private ItemSuporte itemSuporte;
private int posicaoNaLista;
public AdaptadorLista(Context context, List<Jogo> itens) {
this.mInflater = LayoutInflater.from(context);
this.itens = itens;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return itens.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return itens.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
// TODO Auto-generated method stub
if(view == null){
itemSuporte = new ItemSuporte();
view = mInflater.inflate(R.layout.item_lista, null);
itemSuporte.btMaisGolsMandante=((ImageButton) view.findViewById(R.id.btMaisGolsMandante));
itemSuporte.btMaisGolsVisitante=((ImageButton) view.findViewById(R.id.btMaisGolsVisitante));
itemSuporte.btMenosGolsMandante=((ImageButton) view.findViewById(R.id.btMenosGolsMandante));
itemSuporte.btMenosGolsVisitante=((ImageButton) view.findViewById(R.id.btMenosGolsVisitante));
itemSuporte.txtPlacarMandante=((TextView) view.findViewById(R.id.txtPlacarMandante));
itemSuporte.txtPlacarVisitante=((TextView) view.findViewById(R.id.txtPlacarVistante));
itemSuporte.txtNomeMandante=((TextView) view.findViewById(R.id.txtSimboloMandante));
itemSuporte.txtNomeVisitante=((TextView) view.findViewById(R.id.txtSimboloVisitante));
itemSuporte.txtDataJogo=((TextView) view.findViewById(R.id.txtDataJogo));
itemSuporte.txtLocalJogo=((TextView) view.findViewById(R.id.txtLocalJogo));
itemSuporte.simboloMandante=((ImageView) view.findViewById(R.id.imgMandante));
itemSuporte.simboloVisitante=((ImageView) view.findViewById(R.id.imgVisitante));
view.setTag(itemSuporte);
} else {
itemSuporte= (ItemSuporte)view.getTag();
}
Jogo jogo = itens.get(position);
itemSuporte.simboloMandante.setImageResource(jogo.getTimeMandante().getCodigoImagemSimbolo());
itemSuporte.simboloVisitante.setImageResource(jogo.getTimeVisitante().getCodigoImagemSimbolo());
itemSuporte.txtNomeMandante.setText(jogo.getTimeMandante().getSigla());
itemSuporte.txtNomeVisitante.setText(jogo.getTimeVisitante().getSigla());
itemSuporte.txtPlacarMandante.setText(Integer.toString(jogo.getGolsMandante()));
itemSuporte.txtPlacarVisitante.setText(Integer.toString(jogo.getGolsVisitante()));
itemSuporte.txtDataJogo.setText(jogo.getData());
itemSuporte.txtLocalJogo.setText(jogo.getLocal());
itemSuporte.btMaisGolsMandante.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
viewSelecionada = v;
if(event.getAction() == MotionEvent.ACTION_DOWN){
btMaisPressionado=true;
new AumentaGols().execute();
}else if(event.getAction() == MotionEvent.ACTION_UP){
btMaisPressionado = false;
}
return true;
}
});
itemSuporte.btMenosGolsMandante.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
viewSelecionada = v;
if(event.getAction() == MotionEvent.ACTION_DOWN){
btMenosPressionado = true;
new DiminuiGols().execute();
}else if(event.getAction() == MotionEvent.ACTION_UP){
btMenosPressionado = false;
}
return true;
}
});
itemSuporte.btMaisGolsVisitante.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
viewSelecionada = v;
if(event.getAction() == MotionEvent.ACTION_DOWN){
btMaisPressionado = true;
new AumentaGols().execute();
}else if(event.getAction() == MotionEvent.ACTION_UP){
btMaisPressionado = false;
}
return true;
}
});
itemSuporte.btMenosGolsVisitante.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
viewSelecionada = v;
if(event.getAction() == MotionEvent.ACTION_DOWN){
btMenosPressionado=true;
new DiminuiGols().execute();
}else if(event.getAction() == MotionEvent.ACTION_UP){
btMenosPressionado = false;
}
return true;
}
});
return view;
}
public void setGols(){
switch (viewSelecionada.getId()) {
case R.id.btMaisGolsMandante:
gols = golsMandante;
break;
case R.id.btMenosGolsMandante:
gols = golsMandante;
break;
default:
gols = golsVisitante;
break;
}
}
private class ItemSuporte {
ImageView simboloMandante;
ImageView simboloVisitante;
TextView txtPlacarMandante;
TextView txtPlacarVisitante;
TextView txtNomeMandante;
TextView txtNomeVisitante;
TextView txtDataJogo;
TextView txtLocalJogo;
ImageButton btMaisGolsMandante;
ImageButton btMaisGolsVisitante;
ImageButton btMenosGolsMandante;
ImageButton btMenosGolsVisitante;
}
class AumentaGols extends AsyncTask<Void, Integer, Void>{
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
while (btMaisPressionado) {
setGols();
if(gols<9){
gols++;
publishProgress(gols);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
if(viewSelecionada.getId()== R.id.btMaisGolsMandante){
itemSuporte.txtPlacarMandante.setText(String.valueOf(gols));
golsMandante=gols;
}
if(viewSelecionada.getId()== R.id.btMaisGolsVisitante){
itemSuporte.txtPlacarVisitante.setText(String.valueOf(gols));
golsVisitante=gols;
}
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
if(viewSelecionada.getId() == R.id.btMaisGolsMandante){
itemSuporte.txtPlacarMandante.setText(String.valueOf(gols));
golsMandante=gols;
}
if(viewSelecionada.getId() == R.id.btMaisGolsVisitante){
itemSuporte.txtPlacarVisitante.setText(String.valueOf(gols));
golsVisitante=gols;
}
}
}
class DiminuiGols extends AsyncTask<Void, Integer, Void>{
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
while (btMenosPressionado) {
if(gols>0){
gols--;
publishProgress(gols);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
if(viewSelecionada.getId() == R.id.btMenosGolsMandante){
itemSuporte.txtPlacarMandante.setText(String.valueOf(gols));
golsMandante=gols;
}
if(viewSelecionada.getId() == R.id.btMenosGolsVisitante){
itemSuporte.txtPlacarVisitante.setText(String.valueOf(gols));
}
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
if(viewSelecionada.getId() == R.id.btMenosGolsMandante){
itemSuporte.txtPlacarMandante.setText(String.valueOf(gols));
golsMandante=gols;
}
if(viewSelecionada.getId() == R.id.btMenosGolsVisitante){
itemSuporte.txtPlacarVisitante.setText(String.valueOf(gols));
golsVisitante=gols;
}
}
}
}
Layout of each item_list.xml item:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/txtDataJogo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="10/11 - 21:00" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/imgMandante"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center_vertical"
android:layout_weight="7"
android:src="@drawable/parana2" />
<TextView
android:id="@+id/txtSimboloMandante"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_weight="1"
android:text="PAR"
android:textSize="20sp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="3"
android:orientation="vertical" >
<ImageButton
android:id="@+id/btMaisGolsMandante"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_weight="4"
android:background="@drawable/setaparacima" />
<TextView
android:id="@+id/txtPlacarMandante"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:text="2"
android:textSize="50sp" />
<ImageButton
android:id="@+id/btMenosGolsMandante"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_weight="4"
android:background="@drawable/setaparabaixo" />
</LinearLayout>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:text="x"
android:textSize="40sp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="3"
android:orientation="vertical" >
<ImageButton
android:id="@+id/btMaisGolsVisitante"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_weight="4"
android:background="@drawable/setaparacima" />
<TextView
android:id="@+id/txtPlacarVistante"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:text="1"
android:textSize="50sp" />
<ImageButton
android:id="@+id/btMenosGolsVisitante"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_weight="4"
android:background="@drawable/setaparabaixo" />
</LinearLayout>
<TextView
android:id="@+id/txtSimboloVisitante"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_weight="1"
android:text="AVA"
android:textSize="20sp" />
<ImageView
android:id="@+id/imgVisitante"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center_vertical"
android:layout_weight="7"
android:src="@drawable/avai2" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/txtLocalJogo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Allianz Parque" />
</LinearLayout>
</LinearLayout>
Includes the Layout of the items. It would be like taking the view of the item containing the button and the text I want to change?
– caezar
@Caezar I edited my answer.
– ramaral
Perfect @ramaral, too bad I still have no points to be able to evaluate your answer!
– caezar