How to select a particular row from the java listView

0

How do I get the row id of a listView? The idea is this: before grabbing the selected line, I'll work with all the lines I'm trying.

aList = new ArrayList<HashMap<String,String>>();        

for(int i=0;i<countries.length;i++){
        HashMap<String, String> hm = new HashMap<String,String>();
    hm.put("txt", getString(countries[i]));

    aList.add(hm);        
}

String[] from = { "txt" };


int[] to = { R.id.txt};        


SimpleAdapter adapter = new SimpleAdapter(getActivity().getBaseContext(), aList, R.layout.listview_layout, from, to);       

        setListAdapter(adapter);

...

OnItemClickListener listener = new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, final int arg2, long arg3) {



                for(int i=0;i< arg0.getCount();i++){

                não sei fazer o setText(); em todos os 'R.id.txt'...    

            }

If someone has an idea how to do it, I appreciate the help.

    
asked by anonymous 05.12.2014 / 03:29

1 answer

2

First check your event logic, you are using an event to select an item from the list, I did not understand why to change the rest of the items.

Before changing the list item, you need to know what kind of items it has, or you have created a simple list with a String array, or you may have loaded it with objects (and have customized ListView items).

EXAMPLE WITH STRINGS:

Declare an ArrayList of global strings and ArrayAdapter in class

ArrayList<String> arrayItens;
ArrayAdapter<String> adapter;

//chame esse método no inicio da atividade, para carregar a lista.
private void carregaLista(){
        arrayItens = new ArrayList<String>();
        arrayItens.add("um");
        arrayItens.add("dois");
        arrayItens.add("tres");
        //Cria um adapter e o referencia com o arrayItens
        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrayItens);
        //seta sua ListView com o adapter que está contendo seu array
        lvLista.setAdapter(adapter);
        //uma vez setado o adapter do seu ListView, 
        //você não precisa mais trabalhar diretamente com o ListView para manipular seus dados, 
        //você trabalha diretamente na fonte de dados que seria o arrayItens e o adapter. 
    }

In the OnItemClickListener event, change the following lines.

@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
        //modifica a string na posicao exata do arrayList que esta referenciado pelo adapter
        arrayItens.set(position, "esse numero foi selecionado"); //esse texto vai aparecer na tela no lugar do numero.
        //com o arrayList modificado o adapter manda atualizar todas suas referencias com algum componente gráfico que no caso é o ListView.
        adapter.notifyDataSetChanged(); //atualiza o ListView
}

If you need to make the change to all items, you can make a for in the arrayItems. and after for do not forget to call the notifyDataSetChanged method (call this method outside of the for loop) to update the listview on the screen.

    
05.12.2014 / 12:25