Как получить флажок выбранной позиции в списке в Android? - PullRequest
0 голосов
/ 15 декабря 2011

Я создал один просмотр списка, в каждой строке которого есть флажок и текст, мне нужно получить какой-то текст в списке, где флажок установлен в true (установлен) Это мне нужно передать текстовые значения, которые выбираются из списка, используя флажок.

Это мой код:

gatwayList = (ListView) findViewById(R.id.gatwaylist);

        ArrayList<HashMap<String,String>> wholeDetailsList = new ArrayList<HashMap<String,String>>();
        for (int i = 0; i < 5; i++)
        {


        HashMap<String, String> map = new HashMap<String, String>();
        map.put("name", "Test+ i");
        //map.put("address", wrap_address);
        wholeDetailsList.add(map);
        }

        SimpleAdapter wholeDetailsAdapter = new SimpleAdapter(this,
                wholeDetailsList, R.layout.gatway_row, new String[] {"name"}, new int[] {R.id.gatwayId});
        gatwayList.setCacheColorHint(0);
        gatwayList.setAdapter(wholeDetailsAdapter);

gatway_row.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    >
 <CheckBox
        android:id="@+id/check"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="4px"
        android:layout_alignParentLeft="true"
        android:layout_marginRight="10px" >
    </CheckBox>


     <TextView android:id="@+id/gatwayId"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="ffff"
         android:textSize="18dip"
         android:layout_marginTop="15dip"
         android:layout_marginLeft="60dip"
         android:textStyle="bold"
         android:textColor="#000000"/>


</RelativeLayout>

Список выглядит как

enter image description here

В этом случае я должен передать все значения. только выбранное значение. Любые комментарии будут оценены?

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

используйте это вместо этого, лучше:

listView.setChoiceMode(CHOICE_MODE_MULTIPLE);
listView.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_multiple_choice, fields));

Тогда получите выбранные предметы, как это:

listView.getCheckedItemPositions();
0 голосов
/ 27 декабря 2011

Следующий фрагмент, который я использую, чтобы получить ожидаемый пользовательский интерфейс и функциональность,

TableLayout table;
final int row = 6; //variable to get the number of row
        final CheckBox cb[] = new CheckBox[row];

                     table = (TableLayout) findViewById(R.id.gatwaylist);

                    for (int i=0;i<row;i++)

                    {
                          TableRow row = new TableRow(this);

                          CheckBox gateway = new CheckBox(this);
                          gateway.setGravity(Gravity.CENTER);
                       //   gateway.se
                          gateway.setTextColor(Color.BLACK);
                          gateway.setText("Gateway"+i);

                          row.addView(gateway);

                          View view = new View(this);
                          view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 2));
                          view.setBackgroundColor(Color.BLACK);
                          table.addView(row);
                          if(!(i == numgateways-1))
                          {
                              table.addView(view); 
                          }



                          cb[i] = gateway;
                    }

и элемент xml макета таблицы, например:

<ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content">
        <TableLayout android:id="@+id/gatwaylist" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:layout_weight="1"
        android:transcriptMode="normal" android:headerDividersEnabled="true" android:background="@drawable/framebackground"
        >
        </TableLayout></ScrollView>

, и вы можете получить выбранныйэлемент с помощью следующего кода в любом из методов onclick:

for(int i=0;i<row;i++)
                              {
                                    if(cb[i].isChecked())
                                          {
                                                Toast.makeText(TestVideoActivity.this, "Checked :"+cb[i].getText(), Toast.LENGTH_SHORT).show();
                                          }
                              }         }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...