Ver mensagens sem resposta | Ver tópicos ativos Hoje é 26 Jan 2020, 12:01



Responder Tópico  [ 5 Mensagens ] 
 Mudar background de uma linha no ListView ao Clicar 
Autor Mensagem
What is DDMS?
What is DDMS?

Data de registro: 07 Set 2009, 15:25
Mensagens: 30
Mensagem Mudar background de uma linha no ListView ao Clicar
Olá Pessoal,
Possuo uma tela que há um listView, gostaria de saber como ao clickar em um item da lista (evento OnItemClickListener se não me engano), eu poderia mudar a cor de fundo (backgroudColor) somente desse item clicado, ou até mesmo inserir uma imagem no background somente desse item clicado

Alguem já passou por isso? poderia me dar algumas dicas?


02 Mai 2012, 12:19
Perfil
Google employee
Google employee

Data de registro: 28 Jan 2011, 11:42
Mensagens: 1037
Localização: Rio Grande do Sul
Mensagem Re: Mudar background de uma linha no ListView ao Clicar
Terás que mudar teu adapter...

Eu fiz uma esses dias... talvez tenha uma forma mais fácil de se fazer... Não pesquisei, apenas implementei, talvez eu tenha reinventado a roda... AIEhAOEIAIOEHAE... segue o código...

Adapter:


import java.util.List;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;


public class SelectableListAdapter extends BaseAdapter {
    protected Context context;
    protected List list;
    protected SelectableListData selectableData;
    protected int selectedColor;
   
    protected OnSelected onSelectedListener = null;

    public SelectableListAdapter(Context context, SelectableListData selectableData, int selectedColor) {
        this.context = context;
        this.selectableData = selectableData;
        this.list = selectableData.getList();
        this.selectedColor = selectedColor;
    }

    public int getCount() {
        return list.size();
    }

    public Object getItem(int position) {
        return list.get(position);
    }

    public long getItemId(int position) {

        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {

        return new View(context);
    }
   
   
    public void setSelected (int position){
        selectableData.setSelectedPosition(position);
        this.notifyDataSetChanged();
    }
   
    public interface OnSelected {
        public void OnSelected (int position);
    }
   
    public void setOnSelectedListener (OnSelected onSelectedListener){
        this.onSelectedListener = onSelectedListener;
    }
}
 




import com.rafaeldecker.scout.R;
import com.rafaeldecker.scout.data.Player;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class SelectableListPlayerAdapter extends SelectableListAdapter {

    public SelectableListPlayerAdapter(Context context,
            SelectableListData selectableData, int selectedColor) {
        super(context, selectableData, selectedColor);
    }
   
   
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater;
        View rowView = convertView;
       
        if (convertView == null){
            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            rowView = inflater.inflate(R.layout.selectable_list_player_adapter, null);
        }
       
       
        final int p = position;
        TextView numberAndNameOfPlayer = (TextView) rowView.findViewById(R.id.selectable_list_player_text_view);
        Player player = (Player) list.get(position);
        numberAndNameOfPlayer.setText(player.getNumber() + ". " + player.getName());
        // AQUI QUE ELE VERIFICA QUEM ESTÁ SELECIONADO E MUDA O BACKGROUND
        if (selectableData.getSelectedPosition() == position){
            numberAndNameOfPlayer.setBackgroundColor(selectedColor);
        }
        else{
            numberAndNameOfPlayer.setBackgroundResource(R.drawable.action_button);
        }
       
        numberAndNameOfPlayer.setOnClickListener(new View.OnClickListener() {
           
            @Override
            public void onClick(View v) {
                setSelected(p);
                if (onSelectedListener != null){
                    onSelectedListener.OnSelected(p);
                }
               
            }
        });
       

        return rowView;
    }

}

 


Dados da lista:


import java.util.List;

public class SelectableListData {
   
    public static final int START_WITH_FIRST_SELECTED = 0;
    public static final int START_WITHOUTH_SELECTION = -1;
   
    private List list;
    private int selected;
   
    public SelectableListData(List list, int startType){
        this.list = list;
        this.selected = startType;
   
    }
   
    public List getList(){
        return list;
    }
   
    public Object getItemAtPosition (int position){
        return list.get(position);
    }
   
    public int getSelectedPosition(){
        return selected;
    }
   
    public void setSelectedPosition(int position){
        this.selected = position;
    }
   
    public Object getItemAtCurrentPosition(){
        return list.get(selected);
    }
}
 


Na tua activity:

SelectableListAdapter adapter;
SelectableListData selectableData;

...
onCreate()
...
ArrayList<Player> activePlayers = PlayersManager.getInstance().getActivePlayers();
Util.sortListByPlayerTshirtNumber(activePlayers, Util.SORT_LIST_CRESCENT_ORDER);

selectableData = new SelectableListData(activePlayers, SelectableListData.START_WITH_FIRST_SELECTED);

adapter = new SelectableListPlayerAdapter(this, selectableData, getResources().getColor(R.color.player_managment_list_selected_color));
        adapter.setOnSelectedListener(new SelectableListAdapter.OnSelected() {

            @Override
            public void OnSelected(int position) {
                adapter.notifyDataSetChanged();
            }
        });

        mList.setAdapter(adapter);

 


Espero que ajude.

Abraço


02 Mai 2012, 17:41
Perfil
What is DDMS?
What is DDMS?

Data de registro: 07 Set 2009, 15:25
Mensagens: 30
Mensagem Re: Mudar background de uma linha no ListView ao Clicar
Obrigado pela dica rafael decker.
Mas eu consegui resolver assim.


ListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 
    //No meu caso eu teria uma condição para poder marcar se o background da linha deveria ser alterada ou não
     if(Condicao)
     {
               parent.getChildAt(position).setBackgroundColor(Color.BLUE);
     }
     else
     {
               parent.getChildAtposition).setBackgroundColor(Color.BLACK);
     }

 


03 Mai 2012, 11:01
Perfil
Google employee
Google employee

Data de registro: 28 Jan 2011, 11:42
Mensagens: 1037
Localização: Rio Grande do Sul
Mensagem Re: Mudar background de uma linha no ListView ao Clicar
Viu? to dizendo que eu reinventei a roda! UHAEuAHEuHAEUhAE

Abraço


03 Mai 2012, 11:39
Perfil
What is a Activity?
What is a Activity?

Data de registro: 25 Jan 2012, 15:11
Mensagens: 11
Mensagem Re: Mudar background de uma linha no ListView ao Clicar
E ai beleza?
Tenho uma dúvida parecida com essa.
No meu caso, eu quero trocar o backgroud color através da posição da lista.
Algo do tipo:

getItemAtPosition(indexEscolhido).setBackgroundColor(getResources().getColor(Color.RED));

Alguém sabe como se faz isso?

_________________
[E977] LG Optimus G - 4.1.2 Jelly Bean - stock
[GT-P5110] Samsung Galaxy Tab 2 10.1" - 4.0.3 Ice Cream Sandwich - stock
[P990] LG Optimus 2X - 2.3.7 Gingerbread - CyanogenMod - Media Center


17 Dez 2012, 20:13
Perfil
Mostrar mensagens anteriores:  Organizar por  
Responder Tópico   [ 5 Mensagens ] 

Quem está online

Usuários vendo este fórum: ac0502, adelar, adolfo, agtavares, Alessandro Tavares, amarildolacerdas, Analista, apoena, baudamix, bigr ecreio, BOMBER27, boydivalor, BrunoO, BTalhadas, btleandro, camilodev, capo, cavenaghi, cehills, cenatech, cesao, cfranca, china, cleber, comolatti, Corneta, DaDih*, dallari, Damiani Oliveira, Danilo Dias, Darth Vader, denisfln, dfreitas, DITÃO, Dookan, Dudi_FC, ederson_4, edsonel, Eduardo - Brasil, Eliezer Reis, emersonbarros, erosvaldo, espinhara.net, Everton Moreira, fabricioLeonard, Felipe Marcondes, Fernando Cardia, fraga, fredjpa, Gabriel, gabrielpg, gapler, Geovanne Duarte, Gnomo, grandebaro, guilhermepilotti, gutem25, HanNiBaLSeTDf, henrique.cardoso, ice, igor_meneguzzo, inesfg, iuri_freire, JackBlackJack, jairo, Jaison, Jar Jar Binks, Javanês, jaydson, jeanbr07, JeffCF, jhonguitar, jorgecardoso, julianafsa, juliancesar, Juninhooooo, JuniorE, jwv, klausenner, kleberperea, laucode, leanderdulac, Legiao, Lelinho, Leonardo333, lfirpo, luciano.sml, lufreitas, luizfilipe, m4v0, Maiquell, marcos_trb, marlovich, MBetioli, mcroft, Meticore, nandokanarski, nightwatch, nirvana, nishimura.ichigo, nobrejack, Odigooogle™, oliveiramc, On_7, onedroid, Padawan, pererinha, pfsmorigo, pingumanbr, Rafael Felix, renatodondoni, retardad0, ricdigital, roberto caceres, rogeriokta, Rogério, SEO Crawler, sergio, SERGIO RODRIGUES, thiagotomais, Tiago Sousa Roch, tirloni, Toks, unnamedd, Vector, wagner_francisco, wcaciano, Wendel Carvalho, YaCy, yuri82 e 3 visitantes


Você não pode criar novos tópicos neste fórum
Você não pode responder tópicos neste fórum
Você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode enviar anexos neste fórum

Procurar por:

© 2007 - 2016 Portal Android - Comunidade de Desenvolvedores Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi