如何从listView读取数据而不是从适配器读取数据

时间:2015-05-24 16:15:55

标签: android listview android-arrayadapter

我有一个Android ListView,每行包含1个textview和2个edittexts:

  <TextView 
      android:id="@+id/topic_id"
      android:layout_height="wrap_content"
      android:layout_width="0dp"
      android:layout_weight"1"
       />  

  <EditText 
      android:id="@+id/topic_name"
      android:layout_height="wrap_content"
      android:layout_width="0dp"
      android:layout_weight="2" 
      android:textStyle="bold"
      android:textSize="15sp"
      />

  <EditText 
      android:id="@+id/topic_description"
      android:layout_height="wrap_content"
      android:layout_width="0dp"
      android:layout_weight="4" 
      android:textSize="15sp"
      />

用户可以在editTexts中编写所有内容。 我的问题是如何获取此文本?

我的意思是我希望有一个方法在listView中获取行的位置,并返回此行的editTexts内的文本。

此数据在适配器中不存在,因为用户而不是适配器,在editText中写入数据。

如果有人可以提供帮助我会很感激。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以为适配器和Activity / Fragment之间的通信创建一个接口。

public interface OnEditingEndListener {
    void onDone(String editText);
}

该活动实现onDone方法,该方法在EditText收到“on done edit”通知时触发。 可以使用

触发此事件
mEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE) {

            mListener.onDone(mEditText.getText().toString());

            return true; 
        } 
        return false; 
    } 
}); 

其中

 mListener

是您在适配器构造函数中传递的OnEditingEndListener属性:

public MyAdapter(OnEditingEndListener listener) {
   mListener = listener;
}

当事件发生时,监听器将响应:

@Override
void onDone(String editText) {
   //do something with the text insert by the user
}