Можно ли использовать ListView для встроенного редактирования? - PullRequest
1 голос
/ 25 января 2012

EDIT:

Я не могу написать в EditText , он исчезает, когда я пытаюсь написать что-то, потому что getView () вызывается, когда я изменяю данные

Мне нужно загрузить некоторые данные из SQLite и перечислить их в ListView или Grid. Следующее, что нужно сделать, - это обеспечить функциональность встроенного редактирования, то есть пользователь может редактировать данные также в пределах этой сетки ListView OR.

В настоящее время я использую ListView для этой цели. Что я сделал, так это то, что я определил макет для элемента строки, пример xml приведен ниже:

rowitem.xml

   <TableRow
       android:id="@+id/tableRow1"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:weightSum="1">

       <TextView 
            android:text="" 
            android:id="@+id/txtQuestionId" 
            android:layout_width="100dp" 
            android:layout_height="50dp"
            android:clickable="true"
            android:padding="5dip"
            android:gravity="left"
            android:background="@android:color/transparent"/>        


       <EditText 
            android:text="" 
            android:id="@+id/txtQuestion" 
            android:layout_width="400dp" 
            android:layout_height="50dp"
            android:clickable="true"
            android:padding="3dip"
            android:gravity="left"
            />



        <TextView 
            android:text="" 
            android:id="@+id/txtStandard" 
            android:layout_width="200dp" 
            android:layout_height="50dp"
            android:padding="5dip"
            android:gravity="left"/>

        <RadioGroup android:id="@+id/rdbStatus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal" android:weightSum="1">
            <RadioButton android:id="@+id/rbSAT" 
                        android:layout_width="wrap_content" android:text="SAT" 
                        android:layout_height="wrap_content"
                        android:onClick="onStatusClicked"/>
            <RadioButton android:id="@+id/rbUNSAT" 
                        android:layout_width="wrap_content" android:text="UNSAT" 
                        android:layout_height="wrap_content"
                        android:onClick="onStatusClicked"/>
            <RadioButton android:id="@+id/rbNA"     
                        android:layout_width="wrap_content" android:text="NA" 
                        android:layout_height="wrap_content"  
                        android:onClick="onStatusClicked"/> 
        </RadioGroup>       


  </TableRow>

        <!-- just draw a red line -->
    <View
        android:layout_height="2dip"
        android:background="#FF0000" />   

</TableLayout>

Я получаю данные из SQLite и использую пользовательский класс DataAdapter, связывающий данные с ListView.

У меня есть несколько вопросов:

1- Каковы лучшие практики для встроенного редактирования в Android?

2 - Каков наилучший вариант для встроенного редактирования ListView ИЛИ Grid?

3- Каковы преимущества и монеты использования ListView для встроенного редактирования?

Большое спасибо.

Ответы [ 3 ]

3 голосов
/ 25 января 2012

Хорошо, это мое личное мнение .. попробуйте, если вам это нравится ..

  1. Заполните данные в вашем списке из базы данных.(Нет необходимости в EditText в макете).

  2. Создайте диалог с Edittext.Теперь, когда пользователь нажмет на ListItem, откройте этот диалог с предварительно заполненным текстом из текущего выбранного списка строк.Затем разрешите пользователю изменить его.Когда пользователь нажимает кнопку «ОК» в диалоговом окне, затем изменяет текстовое представление в элементе списка.

1 голос
/ 25 января 2012

Почему бы и нет?Это было бы определенно хорошо для пользователя, но немного сложнее в разработке.

  • Ваш макет записи в списке должен обеспечивать редактирование текста (возможно, невидимое) и переключаться на него при щелчке по текстовому представлению.В этом текстовом представлении слушатель костюма должен отслеживать исходный макет и т. Д.
  • Вы должны сохранить данные обратно, как только textedit потеряет фокус или будет возвращена списком для повторного использования в целях прокрутки.
0 голосов
/ 07 мая 2012

@ yaqub использовать EditorActionListener с imeOptions = "actionDone", например

  1. установить свойство android: imeOptions = "actionDone" для edittext, который есть в списке.
  2. использовать editText.setOnEditorActionListener (onEditorActionListener)
  3. отслеживать if (actionId == EditorInfo.IME_ACTION_DONE) {// здесь выполняйте свои действия}
...