首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将编辑文本值从适配器传递给活动?

如何将编辑文本值从适配器传递给活动?
EN

Stack Overflow用户
提问于 2022-03-09 11:55:38
回答 1查看 826关注 0票数 0

我有一个回收视图适配器,接受用户的编辑文本输入。我想将这些值作为列表传递回回收者视图所在的活动。我需要在活动中的这个列表作为参数发送到api通过改造。

EN

回答 1

Stack Overflow用户

发布于 2022-03-11 11:15:45

有个工作样本。

MainActivity.java

代码语言:javascript
复制

进口android.os.Bundle;

进口android.view.KeyEvent;

进口android.view.LayoutInflater;

进口android.view.View;

进口android.view.ViewGroup;

进口android.view.inputmethod.EditorInfo;

进口android.widget.EditText;

进口android.widget.TextView;

进口androidx.annotation.NonNull;

进口androidx.appcompat.app.AppCompatActivity;

进口androidx.recyclerview.widget.RecyclerView;

进口java.util.ArrayList;

进口java.util.List;

公共类MainActivity扩展AppCompatActivity {

代码语言:javascript
复制
@Override
代码语言:javascript
复制
protected void onCreate(Bundle savedInstanceState) {
代码语言:javascript
复制
    super.onCreate(savedInstanceState);
代码语言:javascript
复制
    setContentView(R.layout.activity_main);
代码语言:javascript
复制
    Adapter adapter = new Adapter();
代码语言:javascript
复制
    RecyclerView recyclerView = findViewById(R.id.recyclerView);
代码语言:javascript
复制
    recyclerView.setAdapter(adapter);
代码语言:javascript
复制
    EditText editText = findViewById(R.id.editText);
代码语言:javascript
复制
    editText.setOnEditorActionListener((textView, actionId, keyEvent) -> {
代码语言:javascript
复制
        boolean handled = false;
代码语言:javascript
复制
        if (actionId == EditorInfo.IME_ACTION_DONE) {
代码语言:javascript
复制
            // add item
代码语言:javascript
复制
            adapter.addItem(editText.getText().toString());
代码语言:javascript
复制
            // clear text input
代码语言:javascript
复制
            textView.setText("");
代码语言:javascript
复制
            handled = true;
代码语言:javascript
复制
        }
代码语言:javascript
复制
        return handled;
代码语言:javascript
复制
    });
代码语言:javascript
复制
}

}

代码语言:javascript
复制

activity_main.xml

代码语言:javascript
复制

http://schemas.android.com/apk/res/android“

代码语言:javascript
复制
xmlns:app="http://schemas.android.com/apk/res-auto"
代码语言:javascript
复制
xmlns:tools="http://schemas.android.com/tools"
代码语言:javascript
复制
android:layout_width="match_parent"
代码语言:javascript
复制
android:layout_height="match_parent"
代码语言:javascript
复制
android:padding="16dp"
代码语言:javascript
复制
tools:context=".MainActivity">
代码语言:javascript
复制
<EditText
代码语言:javascript
复制
    android:id="@+id/editText"
代码语言:javascript
复制
    android:layout_width="0dp"
代码语言:javascript
复制
    android:layout_height="wrap_content"
代码语言:javascript
复制
    android:hint="Insert text.."
代码语言:javascript
复制
    android:imeOptions="actionDone"
代码语言:javascript
复制
    android:inputType="text"
代码语言:javascript
复制
    app:layout_constraintBottom_toTopOf="@+id/recyclerView"
代码语言:javascript
复制
    app:layout_constraintLeft_toLeftOf="parent"
代码语言:javascript
复制
    app:layout_constraintRight_toRightOf="parent"
代码语言:javascript
复制
    app:layout_constraintTop_toTopOf="parent"
代码语言:javascript
复制
    app:layout_constraintVertical_bias="0.0"
代码语言:javascript
复制
    app:layout_constraintVertical_chainStyle="packed" />
代码语言:javascript
复制
<androidx.recyclerview.widget.RecyclerView
代码语言:javascript
复制
    android:id="@+id/recyclerView"
代码语言:javascript
复制
    android:layout_width="0dp"
代码语言:javascript
复制
    android:layout_height="wrap_content"
代码语言:javascript
复制
    android:layout_marginTop="16dp"
代码语言:javascript
复制
    app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
代码语言:javascript
复制
    app:layout_constraintBottom_toBottomOf="parent"
代码语言:javascript
复制
    app:layout_constraintEnd_toEndOf="parent"
代码语言:javascript
复制
    app:layout_constraintStart_toStartOf="parent"
代码语言:javascript
复制
    app:layout_constraintTop_toBottomOf="@+id/editText" />

代码语言:javascript
复制

Adapter.java

代码语言:javascript
复制

进口android.view.LayoutInflater;

进口android.view.View;

进口android.view.ViewGroup;

进口android.widget.TextView;

进口androidx.annotation.NonNull;

进口androidx.recyclerview.widget.RecyclerView;

进口java.util.ArrayList;

进口java.util.List;

公共类适配器扩展RecyclerView.Adapter {

代码语言:javascript
复制
private List<String> items = new ArrayList<>();
代码语言:javascript
复制
@NonNull
代码语言:javascript
复制
@Override
代码语言:javascript
复制
public Adapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
代码语言:javascript
复制
    LayoutInflater inflater = LayoutInflater.from(parent.getContext());
代码语言:javascript
复制
    View view = inflater.inflate(android.R.layout.test_list_item, parent, false);
代码语言:javascript
复制
    return new ViewHolder(view);
代码语言:javascript
复制
}
代码语言:javascript
复制
@Override
代码语言:javascript
复制
public void onBindViewHolder(@NonNull Adapter.ViewHolder holder, int position) {
代码语言:javascript
复制
    String currentItem = items.get(position);
代码语言:javascript
复制
    holder.textView.setText(currentItem);
代码语言:javascript
复制
}
代码语言:javascript
复制
public void addItem(String item) {
代码语言:javascript
复制
    // add at first position - replace with your desired index
代码语言:javascript
复制
    int index = 0;
代码语言:javascript
复制
    this.items.add(index, item);
代码语言:javascript
复制
    notifyItemInserted(index);
代码语言:javascript
复制
}
代码语言:javascript
复制
@Override
代码语言:javascript
复制
public int getItemCount() {
代码语言:javascript
复制
    return items.size();
代码语言:javascript
复制
}
代码语言:javascript
复制
public class ViewHolder extends RecyclerView.ViewHolder {
代码语言:javascript
复制
    protected TextView textView;
代码语言:javascript
复制
    public ViewHolder(@NonNull View itemView) {
代码语言:javascript
复制
        super(itemView);
代码语言:javascript
复制
        textView = itemView.findViewById(android.R.id.text1);
代码语言:javascript
复制
    }
代码语言:javascript
复制
}

}

代码语言:javascript
复制
```javascript

您可以使用键盘上的“完成”键通知适配器某个项已经添加。

要在xml中显示“完成”按钮,必须在编辑文本中使用这两个说明。

代码语言:javascript
复制
```javascript
代码语言:javascript
复制
android:imeOptions="actionDone"
代码语言:javascript
复制
android:inputType="text"
代码语言:javascript
复制
```javascript
代码语言:javascript
复制
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71408953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档