質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

受付中

android ListView内に設置したEditTextの値取得

ryo_se
ryo_se

総合スコア68

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

1回答

0リアクション

0クリップ

6658閲覧

投稿2015/07/14 06:56

編集2015/07/15 07:05

android開発を行っております。

DBから取得した1カラム分のデータをListViewのEditTextに各々表示させ、ListView内の各行に表示されている更新ボタンを押すと
EditTextに入力されている文字を更新して登録するというプログラムを作っています。

現在更新ボタンをおしたときに、position情報を取得するところまではできたのですが、
position情報からEditTextの情報を取得しても入力内容変更前のデータしか取得することができません。

参考になりそうな文献が少ないため、方法をご教授していただければ幸いです。

追記

●DataBaseActivity.java

public class DataBaseActivity extends ActionBarActivity { static final String DB = "sqlite_sample.db"; static final int DB_VERSION = 1; static final String CREATE_TABLE = "create table mytable ( _id integer primary key autoincrement, data integer not null );"; static final String DROP_TABLE = "drop table mytable;"; static SQLiteDatabase mydb; private SimpleCursorAdapter myadapter; private static final String TAG = MainActivity.class.getSimpleName(); private ListView listview; private Button addbtn, delbtn, addTxtbtn; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_data_base); MySQLiteOpenHelper hlpr = new MySQLiteOpenHelper(getApplicationContext()); mydb = hlpr.getWritableDatabase(); Cursor cursor = mydb.query("mytable", new String[] {"_id", "data"}, null, null, null, null, "_id DESC"); String[] from = new String[] {"_id", "data"}; int[] to = new int[] {R.id.db_id, R.id.db_data}; startManagingCursor(cursor); myadapter = new SimpleCursorBtnAdapter(this,R.layout.db_text, cursor, from, to,R.id.btn_update); listview = (ListView)findViewById(R.id.db_listView); listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { update(parent,view,position,id); } }); listview.setAdapter(myadapter); } private static class MySQLiteOpenHelper extends SQLiteOpenHelper { public MySQLiteOpenHelper(Context c) { super(c, DB, null, DB_VERSION); } public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE); } public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL(DROP_TABLE); onCreate(db); } } /** * 更新を行う(未完成) * @param parent * @param view * @param position * @param id */ private void update(AdapterView<?> parent, View view, int position, long id) { ListView listView = (ListView) parent; Cursor item = (Cursor)listView.getItemAtPosition(position); int lgin_id = item.getInt(item.getColumnIndex("_id")); String lgin_name = item.getString(item.getColumnIndex("data")); Log.d("ItemClick", "id="+lgin_id+", data=" + lgin_name); } }

●DataBaseActivity.java

/** * ListViewにおけるボタン要素のポジション取得アダプター * Created by r-aga on 2015/07/13. */ public class SimpleCursorBtnAdapter extends SimpleCursorAdapter { private int mButton; public SimpleCursorBtnAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int button) { super(context, layout, c, from, to); mButton = button; } public View getView(final int position, View convertView, final ViewGroup parent) { View view = super.getView(position, convertView, parent); Button btn = (Button) view.findViewById(mButton); btn.setTag(position); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg) { AdapterView.OnItemClickListener listener = list.getOnItemClickListener(); long id = getItemId(position); listener.onItemClick((AdapterView<?>) parent, arg, position, id); } }); return view; } }

不要な部分は削除したので、おかしなところがあるかもしれません。
ListViewにおいて、更新ボタンを押した時のpositionを作成するために、アダプターを自前で用意しています。
参考サイト
http://blogs.gine.jp/taka/archives/2966

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

shigeo.h

2015/07/15 06:13

以下2点お願いします。 ①EditTextの内容が更新されたタイミングで何か処理をしていますか? (Adapterへ渡しているデータの更新など) ②「position情報からEditTextの情報を取得」とは具体的にどのような処理でしょうか? よろしくお願いします。
ryo_se

2015/07/15 07:07

① EditTextの内容が更新されたタイミングでは現在処理はしていません。 TextWatcher等を使用して値を取得するといった例があるようですが、具体的な参考例がなく現在も取得できていません。 ② ソースコードを追記しました。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。