Как получить значение элементов управления, добавленных в ListView - PullRequest
0 голосов
/ 15 марта 2012

У меня есть данные в моем элементе управления ListView, такие как:

Country  State  City
India    U.P.   Kanpur
India    M.P.   Gwalior

Теперь проблема в том, что я хочу добавить выделение в ListView с помощью переключателя или любого другого элемента управления, например:

Country  State  City     Choose
India    U.P.   Kanpur   Yes|No
India    M.P.   Gwalior  Yes|No

и, наконец, сохраните данные с их выбором.

Обновление: -

Я успешно добавил элементы управления в listView, теперь я хочу запустить цикл по всем строкам списка, чтобы получить значения каждой строки, включая радиокнопку.

public static final String KEY_DESCRIPTION = "description";
public static final String KEY_ID = "id";
public static final String KEY_ROW_ID = "_id";


SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                    R.layout.listview_layout, cursor, new String[] {
                            GridTestActivity.KEY_ROW_ID,
                            GridTestActivity.KEY_ID,
                            GridTestActivity.KEY_DESCRIPTION }, new int[] {
                            R.id.txtLv_id, R.id.txtLvid,
                            R.id.txtLvDescription });
            adapter.setViewResource(R.layout.listview_layout);
            lv.setAdapter(adapter);
            lv.setTextFilterEnabled(true);
            lv.setFocusable(false);

lv.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> a, View v, int i,
                        long l) {
                    try {

                        int id = v.getSelectedItemPosition();
                        String id1 = (String) lv.getSelectedItem();
                        long id2 = lv.getSelectedItemId();
                        int id3 = i;//Return Row number
                    } catch (Exception ex) {
                        ex.setStackTrace(null);
                    }
                }
            });

public void onRadioButtonClicked(View v) {
    RadioButton rb = (RadioButton) v;
    Toast.makeText(getApplicationContext(), rb.getText(),
            Toast.LENGTH_SHORT).show();
}

setOnItemClickListener возвращает мне номер строки, в то время как для обновления записи мне нужно значение Id.

<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/widget443"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:maxWidth="400sp"
    android:minWidth="400sp"
    android:orientation="vertical"
    android:stretchColumns="3" >

    <TableRow
        android:id="@+id/widget4344"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:maxWidth="400sp"
        android:minWidth="400sp"
        android:orientation="horizontal"
        android:padding="0sp" >

        <TextView
            android:id="@+id/txtLv_id"
            android:layout_width="10sp"
            android:layout_height="wrap_content"
            android:layout_column="0"
            android:padding="4sp"
            android:text="@string/txtLv_Id"
            android:textSize="6pt"
            android:visibility="invisible" >
        </TextView>

        <TextView
            android:id="@+id/txtLvid"
            android:layout_width="100sp"
            android:layout_height="wrap_content"
            android:layout_column="1"
            android:padding="4sp"
            android:text="@string/txtLvId"
            android:textSize="6pt" >
        </TextView>

        <TextView
            android:id="@+id/txtLvDescription"
            android:layout_width="100sp"
            android:layout_height="wrap_content"
            android:layout_column="2"
            android:padding="4sp"
            android:text="@string/txtLvDescription"
            android:textSize="6pt" >
        </TextView>

        <RadioGroup
            android:id="@+id/rdGroup"
            android:layout_width="100sp"
            android:layout_height="wrap_content"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:orientation="horizontal" >

            <RadioButton
                android:id="@+id/rdYes"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:checked="true"
                android:focusable="false"
                android:focusableInTouchMode="false"
                android:onClick="onRadioButtonClicked"
                android:text="@string/rdYes" />

            <RadioButton
                android:id="@+id/rdNo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:focusable="false"
                android:focusableInTouchMode="false"
                android:onClick="onRadioButtonClicked"
                android:text="@string/rdNo" />
        </RadioGroup>
    </TableRow>
</TableLayout>

Ответы [ 3 ]

1 голос
/ 17 марта 2012

Временное решение:))

public void onRadioButtonClicked(View v) {
    RadioButton rb = (RadioButton) v;
    // Toast.makeText(getApplicationContext(),
    // rb.getText(),Toast.LENGTH_SHORT).show();
    View Rg = (View) rb.getParent();
    View LLayout = (View) Rg.getParent();
    TextView txtLvId = (TextView) LLayout.findViewById(R.id.txtLvid);
    String LvID = txtLvId.getText().toString();

}

На основе выбранного текста и соответствующего значения IDColumn сохранить запись в базе данных мгновенно.

Все же я ищу лучшее решение.

1 голос
/ 16 марта 2012

Первое, что нужно сделать, это сделать его списком, а не сеткой, потому что у вас есть список элементов строки, а затем в XML, используя макет строки, вы можете добавить три представления TextView и один переключатель / флажок в представление.

0 голосов
/ 05 мая 2015
De tantas pulicaciones que hay en Internert, esta es la que me pudo ayudar.  
Muchas Gracias.

public void onRadioButtonClicked(View v) {
    RadioButton rb = (RadioButton) v;
    // Toast.makeText(getApplicationContext(),
    // rb.getText(),Toast.LENGTH_SHORT).show();
    View Rg = (View) rb.getParent();
    View LLayout = (View) Rg.getParent();
    TextView txtLvId = (TextView) LLayout.findViewById(R.id.txtLvid);
    String LvID = txtLvId.getText().toString();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...