1

编辑:

我无法写入 EditText,当我尝试写东西时它消失了,这是因为当我修改数据时调用了 getView()

我需要从 SQLite 加载一些数据并将其列在 ListView 或 Grid 中。接下来是提供内联编辑功能,即用户也可以在 ListView OR 网格中编辑数据。

目前我正在为此目的使用 ListView。我所做的是我为行项目定义了布局,下面提供了示例 xml:

行项目.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 或网格的最佳选择是什么?

3- 使用 ListView 进行内联编辑有什么好处和好处?

太谢谢了。

4

3 回答 3

3

好吧,这是我的个人意见..如果你喜欢它试试..

  1. 从数据库中填写列表中的数据。(布局中不需要 EditText)。

  2. 使用 Edittext 创建一个对话框。现在,当用户单击 ListItem 时,打开该对话框,其中包含当前选定列表行 textview 中的预填充文本。然后允许用户更改它。当用户在对话框上单击确定时,然后在列表项中修改该 Textview ..

于 2012-01-25T10:29:04.097 回答
1

为什么不?这对用户来说肯定很好,但开发起来有点棘手。

  • 您的列表条目布局必须提供文本编辑(可能是不可见的)并在单击文本视图时切换到它。这个文本视图应该有合适的监听器在父布局等中跟踪。
  • 一旦 textedit 失去焦点/即将被列表视图回收,您必须立即保存数据,以便在滚动时重复使用。
于 2012-01-25T10:36:24.857 回答
0

@yaqub使用 EditorActionListener 和 imeOptions="actionDone" 喜欢

  1. 为列表中的 edittext 设置 android:imeOptions="actionDone" 属性。
  2. 使用 editText.setOnEditorActionListener(onEditorActionListener)
  3. track if(actionId == EditorInfo.IME_ACTION_DONE) {//在这里做你的动作}
于 2012-05-07T11:08:03.647 回答