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 または Grid のインライン編集に最適なオプションは何ですか?

3- インライン編集に ListView を使用する利点と利点は何ですか?

まことにありがとうございます。

4

3 に答える 3

3

わかりました、それは私の個人的な意見です..よかったら試してみてください..

  1. データベースからリストにデータを入力します。(レイアウトに EditText は必要ありません)。

  2. Edittext でダイアログを作成します。ユーザーが ListItem をクリックすると、現在選択されているリスト行のテキストビューから事前に入力されたテキストを含むダイアログが開きます。次に、ユーザーが変更できるようにします。ユーザーがダイアログで [OK] をクリックすると、リスト項目の Textview が変更されます。

于 2012-01-25T10:29:04.097 に答える
1

なぜだめですか?ユーザーにとっては間違いなく良いことですが、開発するのはちょっと難しいです。

  • リスト エントリのレイアウトは、テキスト編集 (おそらく非表示) を提供し、テキスト ビューをクリックするとそれに切り替わる必要があります。このテキストビューには、親レイアウトなどで追跡する適切なリスナーが必要です。
  • textedit がフォーカスを失ったらすぐにデータを保存し直す必要があります / スクロールの原因で再利用するためにリストビューによって再利用されようとしています。
于 2012-01-25T10:36:24.857 に答える
0

@yaqubのような imeOptions="actionDone" で EditorActionListener を使用します

  1. リストにある edittext の android:imeOptions="actionDone" プロパティを設定します。
  2. editText.setOnEditorActionListener(onEditorActionListener) を使用します
  3. track if(actionId == EditorInfo.IME_ACTION_DONE) {//ここでアクションを行います}
于 2012-05-07T11:08:03.647 に答える