使用Button更改ListView项目中的TextView

时间:2014-11-11 20:18:02

标签: android listview

我的项目中有一个ListView。每行有1个Button和1个TextView,文本为“free line”。当我点击按钮时,如何将TextView的文本更改为“Occupied Line”? 现在,当我单击Button时,更改的文本是我的ListView的最后一个。 我需要使用GetTag吗?但是,什么是标签? 有人有一个简单的例子吗?

我的适配器:

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;
            }
        }

    }
}

1 个答案:

答案 0 :(得分:0)

listView适配器中的

getView 方法):

youButton.setOnClickListener(new OnClickListener() { 
        @Override 
        public void onClick(View v) { 
            yourTextView.setText("Occupied Line");
        } 
    });