使用ListView进行内联编辑可以吗?

发布于 2024-12-28 15:11:59 字数 3088 浏览 2 评论 0原文

编辑:

我无法写入EditText,当我尝试写入时它会消失 某事,因为我修改数据时调用了 getView()

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

目前我正在使用 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 的最佳选项是什么?< /strong>

3- 什么是优点和优点?使用 ListView 进行内联编辑的硬币?

非常感谢。

EDIT:

I can't write into the EditText, it disappears when i try to write
something, its because the getView() is called when i modify the data

I need to load some data from SQLite & list it in a ListView or Grid. The next thing is to provide the inline editing functionality, i.e the user can edit the data also within that ListView OR grid.

Currently i am using the ListView for this purpose. What i have done is that i have defined layout for the row item, the sample xml is provide below:

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>

I am getting the data from SQLite & using a custom DataAdapter class bind the data with ListView.

I have few questions:

1- What are the best practices for inline editing in android?

2- What is the best option for inline Editiing ListView OR Grid?

3- What are pros & coins of using ListView for inline Editing?

Great Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

中性美 2025-01-04 15:11:59

好的,这是我个人的意见.. 如果您喜欢的话请尝试..

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

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

Ok, Its my personal opinion.. try if you like it..

  1. Fill data in your list from database. (No need of EditText in layout).

  2. Make a dialog with Edittext. Now when user click on ListItem open that dialog with pre-populated text from current selected list row textview. Then allow user to change in it. When user click OK on dialog then modify that Textview in list item..

神经大条 2025-01-04 15:11:59

为什么不呢?这对用户来说绝对是好事,但开发起来有点棘手。

  • 您的列表条目布局必须提供文本编辑(可能不可见)并在单击文本视图时切换到它。此文本视图应有合适的侦听器来跟踪父布局等。
  • 一旦文本编辑失去焦点/即将被列表视图回收以在滚动时重用,您必须立即保存数据。

Why not? It would be definitely nice for user, but kind of tricky to develop.

  • Your list entry layout must provide text edit ( maybe invisible ) and switch to it on click on text view. This text view shall have suitale listener keeping track in parent layout etc.
  • you have to save data back as soon as textedit loses focus / about to being reclaimed by list view for reuse in cause fo scrolling.
花开柳相依 2025-01-04 15:11:59

@yaqub 使用 EditorActionListener 和 imeOptions="actionDone"
一样

  1. 就像为列表中的 edittext 设置 android:imeOptions="actionDone" 属性
  2. 。使用 editText.setOnEditorActionListener(onEditorActionListener)
  3. track if(actionId == EditorInfo.IME_ACTION_DONE) {//在这里执行您的操作}

@yaqub use EditorActionListener with imeOptions="actionDone"
like

  1. set the android:imeOptions="actionDone" property for edittext which is there in list.
  2. use editText.setOnEditorActionListener(onEditorActionListener)
  3. track if(actionId == EditorInfo.IME_ACTION_DONE) {//here do your action}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文