我的项目中有一个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;
}
}
}
}
答案 0 :(得分:0)
( getView 方法):
youButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
yourTextView.setText("Occupied Line");
}
});