2016-12-04 3 views
0

このアダプタクラスでは、ボタンクリック時にユーザーが入力したEditText値を読み込もうとしています。 EditTextとボタンの両方がListView項目の中にあります。その価値を読み取る最良の方法は何ですか?私が下に試した方法は、EditTextフィールドから正しい値を取得しませんでした。ボタンをクリックすると、ListViewアイテム内の編集済みのEditTextフィールド値をどのように読み取ることができますか?

@Override 
public View getView(final int position, View convertView, final ViewGroup parent) 
{ 
    box = null; 
    db = new database(getContext()); 

    if (convertView == null) 
    { 
     LayoutInflater inflater = LayoutInflater.from(getContext()); 
     convertView = inflater.inflate(layout, null); 

     box = new container(); 
     box.X = (TextView) convertView.findViewById(R.id.manage_X); 
     box.Y = (TextView) convertView.findViewById(R.id.manage_Y); 
     box.Z = (TextView) convertView.findViewById(R.id.manage_Z); 
     box.button = (Button) convertView.findViewById(R.id.manage_button); 
     convertView.setTag(box); 
    } 

    else 
    { 
     box = (container) convertView.getTag(); 
    } 

    box.X.setText(getItem(position).getX()); 
    box.Y.setText(String.valueOf(getItem(position).getY())); 

    box.button.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      View view = View.inflate(getContext(), R.layout.activity_manage, null); 
      string_is = (EditText) view.findViewById(R.id.manage_Z); 
      value_is = new Integer(string_is.getText().toString()); 

      // In my ListView, I have an item with 1 EditText and a button. 
      // User can enter a value for Z, which is EditText. 
      // I want to read that value upon button click and do things with it. 
      // My above method does not capture the correct Z value. 
    }); 

    return convertView; 
} 

public class container 
{ 
    TextView X; 
    TextView Y; 
    TextView Z; 
    Button button; 
} 
+0

共有スクリーンショット... –

+0

View view = View.inflate(getContext()、R.layout.activity_manage、null);なぜアダプタのレイアウトを膨らませるのですか? –

答えて

0

あなたはボタンのOnClickListenerを設定するだけのようeditText.addOnTextChangedListener()を実装してみます。変更されたすべてのテキストで、変更された文字列を文字列変数に格納し、ボタンをクリックするとその変数にアクセスします。

+1

ありがとう! addTextChangedListener()を実装しました。このソリューションでうまくいきました。 – Ras

+0

あなたは大歓迎です!ハッピーコーディング、Ras! –

0

もう一度ビューを再度展開しないと、新しいビューが作成され、findViewByIdは新しいビューを返します。

補正とあなたのコード:上記は働い

box.button.setOnClickListener(new View.OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
     string_is = (EditText) box.findViewById(R.id.manage_Z); 
     value_is = new Integer(string_is.getText().toString()); 
    } 
}); 
+0

ありがとう、ジョナサン!反復インフレを取り除いた。しかし、私は以下で説明したように別の問題がありました... – Ras

0
box.button.setOnClickListener(new View.OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
    string_is = (EditText)box.findViewById(R.id.manage_Z); 
    value_is = new Integer(string_is.getText().toString()); 
    } 
}); 

。しかし、私は奇妙な問題に遭遇しました。私は2番目のlistView項目のeditText値だけを読むことができます。私は、リスト内のいくつかのアイテムを持っていると私は他のボタンをクリックすると、彼らは次のエラーメッセージ与える:非アクティブInputConnection

W/IInputConnectionWrapper上requestCursorAnchorInfo:

W/IInputConnectionWrapper非アクティブInputConnectionにgetTextBeforeCursorを

E/RichInputConnection:テキストを取得するためにエディタに接続できません。

D/RichInputConnection:後でテキストを取得しようとします。

+0

あなたの質問を編集することはできませんか? – jonathanrz

+0

あなたはlogcat全体を投稿できますか? – jonathanrz

関連する問題