Android 在下一个活动中将编辑文本内容传递给RecyclerView

Android 在下一个活动中将编辑文本内容传递给RecyclerView,android,android-layout,android-recyclerview,Android,Android Layout,Android Recyclerview,我正在将EditText值从一个活动传递到另一个包含RecyclerView的活动。但我有一个问题仍然无法解决 我的main.xml包含编辑文本字段和添加按钮。单击添加按钮时,编辑文本值应传递到下一个XML中的回收视图 这是我的主要活动: import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBarAc

我正在将
EditText
值从一个活动传递到另一个包含
RecyclerView
的活动。但我有一个问题仍然无法解决

我的
main.xml
包含
编辑文本
字段和添加
按钮
。单击添加
按钮
时,
编辑文本
值应传递到下一个XML中的
回收视图

这是我的主要活动:

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

 public class MainActivity extends ActionBarActivity {

private RecyclerView myRecyclerView;
private LinearLayoutManager linearLayoutManager;
private RecyclerViewAdapter myRecyclerViewAdapter;

EditText nameField;
Button btnAdd;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myRecyclerView = (RecyclerView) findViewById(R.id.myrecyclerview);

    nameField = (EditText) findViewById(R.id.namefield);
    btnAdd = (Button) findViewById(R.id.addbutton);
    btnAdd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            /*String newName = nameField.getText().toString();*/
            Intent i = new Intent(getApplicationContext(), ListFromMain.class);
            startActivity(i);
            /*myRecyclerViewAdapter.add(0,newName);
            Toast.makeText(MainActivity
                    .this,"You added" +newName.toUpperCase()+ "in your view",Toast.LENGTH_LONG).show();*/

        }
    });
}
}

我的回收器适配器

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ItemHolder> {

private List<String> itemsName;
private OnItemClickListener onItemClickListener;
private LayoutInflater layoutInflater;

public RecyclerViewAdapter(Context context){
    layoutInflater = LayoutInflater.from(context);
    itemsName = new ArrayList<String>();
}

@Override
public RecyclerViewAdapter.ItemHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView = layoutInflater.inflate(R.layout.text_view,parent, false);
    return new ItemHolder(itemView, this);
}

@Override
public void onBindViewHolder(RecyclerViewAdapter.ItemHolder holder, int position) {
    holder.setItemName(itemsName.get(position));

}

@Override
public int getItemCount() {
    return itemsName.size();
}

public void setOnItemClickListener(OnItemClickListener listener){
    onItemClickListener = listener;
}

public OnItemClickListener getOnItemClickListener(){
    return onItemClickListener;
}

public interface OnItemClickListener{
    public void onItemClick(ItemHolder item, int position);
}

public void add(int location, String iName){
    itemsName.add(location, iName);
    notifyItemInserted(location);
}


public static class ItemHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

    private RecyclerViewAdapter parent;
    TextView textItemName;

    public ItemHolder(View itemView, RecyclerViewAdapter parent) {
        super(itemView);
        itemView.setOnClickListener(this);
        this.parent = parent;
        textItemName = (TextView) itemView.findViewById(R.id.textview);
    }

    public void setItemName(CharSequence name){
        textItemName.setText(name);
    }

    public CharSequence getItemName(){
        return textItemName.getText();
    }

    @Override
    public void onClick(View v) {
        final OnItemClickListener listener = parent.getOnItemClickListener();
        if(listener != null){
            listener.onItemClick(this, getPosition());
        }
    }
}}
Main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical">


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <EditText
        android:id="@+id/namefield"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/addbutton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Add"/>
</LinearLayout>

Recycler_list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
    android:id="@+id/myrecyclerview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
 </LinearLayout>

文本视图xml

<?xml version="1.0" encoding="utf-8"?>
 <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textview"/>


main中的编辑文本值应显示在recycler_列表中。

在您的列表FromMain中创建一个arraylist如:

private ArrayList<String> itemsList;
在活动类的ListFromMain的onCreate

if(getIntent().hasExtra("item_name")) {
itemsList.add(getIntent().getStringExtra("item_name"));
myRecyclerViewAdapter.notifyDataSetChange();
}

希望它能帮到你。

在你的列表中创建一个arraylist fromMain类似:

private ArrayList<String> itemsList;
在活动类的ListFromMain的onCreate

if(getIntent().hasExtra("item_name")) {
itemsList.add(getIntent().getStringExtra("item_name"));
myRecyclerViewAdapter.notifyDataSetChange();
}

希望它能帮助您。

我已经从这里删除了recyclerview代码,单击按钮,您将在下一个活动中传递一个名称列表

public class MainActivity extends ActionBarActivity implements      
RecyclerViewAdapter.OnItemClickListener{

 EditText nameField;
 Button btnAdd;
 List<String> nameList;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   nameList = new Arraylist<>();

nameField = (EditText)findViewById(R.id.namefield);
btnAdd = (Button)findViewById(R.id.addbutton);
btnAdd.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v) {
        String newName = nameField.getText().toString();
        nameList.add(newName);
        Intent i = new Intent(getApplicationContext(),ListFromMain.class);
         intent.putStringArrayListExtra("key",nameList);
         startActivity(intent);
        Toast.makeText(MainActivity
                .this,"You added" +newName.toUpperCase()+ "in your view",Toast.LENGTH_LONG).show();

    }
});
 }

@Override
 public void onItemClick(RecyclerViewAdapter.ItemHolder item, int position) {
   Toast.makeText(this,
        "Remove " + position + " : " + item.getItemName(),
        Toast.LENGTH_SHORT).show();
}}
public类MainActivity扩展了ActionBarActivity实现
RecycleServiceAdapter.OnItemClickListener{
编辑文本名称字段;
按钮btnAdd;
名单名单;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
名称列表=新的Arraylist();
nameField=(EditText)findViewById(R.id.nameField);
btnAdd=(按钮)findViewById(R.id.addbutton);
btnAdd.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串newName=nameField.getText().toString();
名称列表。添加(新名称);
Intent i=newintent(getApplicationContext(),ListFromMain.class);
intent.putStringArrayListExtra(“键”,名称列表);
星触觉(意向);
Toast.makeText(main活动
.this,“您在视图中添加了“+newName.toUpperCase()+”,Toast.LENGTH_LONG.show();
}
});
}
@凌驾
public void onItemClick(RecycleServiceAdapter.ItemHolder项目,内部位置){
Toast.makeText(这个,
“删除”+位置+:“+项.getItemName(),
吐司。长度(短)。show();
}}
在这里,我们设置recyclerview并从上一个活动中获取意图,并在适配器的构造函数中设置该列表。 列表活动

     public class ListFromMain extends ActionBarActivity{
        private RecyclerView myRecyclerView;
        private LinearLayoutManager linearLayoutManager;
        private RecyclerViewAdapter myRecyclerViewAdapter;
     @Override
      protected void onCreate( Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.reycler_list);
        ArrayList<String> nameList = getIntent().getStringArrayListExtra("key");
          myRecyclerView = (RecyclerView)findViewById(R.id.myrecyclerview);

         linearLayoutManager =
        new LinearLayoutManager(this, LinearLayoutManager.VERTICAL,     false);


          myRecyclerViewAdapter = new RecyclerViewAdapter(this,nameList);
          myRecyclerView.setAdapter(myRecyclerViewAdapter);
          myRecyclerView.setLayoutManager(linearLayoutManager);



   }
}
public class ListFromMain扩展了ActionBarActivity{
私人回收视图myRecyclerView;
私人直线酒店经理直线酒店经理;
私人RecycleServiceAdapter MyRecycleServiceAdapter;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.reycler_列表);
ArrayList nameList=getIntent().GetStringArrayListXTRA(“键”);
myRecyclerView=(RecyclerView)findViewById(R.id.myRecyclerView);
直线布局经理=
新建LinearLayoutManager(此,LinearLayoutManager.VERTICAL,false);
MyRecycleServiceAdapter=新的RecycleServiceAdapter(此,名称列表);
设置适配器(myRecycleServiceAdapter);
myRecyclerView.setLayoutManager(linearLayoutManager);
}
}
适配器中没有太多的变化,只有一个是从构造函数中初始化列表,就是这样。 回收装置

    public class RecyclerViewAdapter extends     RecyclerView.Adapter<RecyclerViewAdapter.ItemHolder> {

  private List<String> itemsName;
  private OnItemClickListener onItemClickListener;
  private LayoutInflater layoutInflater;

 public RecyclerViewAdapter(Context context,ArrayList<String> nameList){
     layoutInflater = LayoutInflater.from(context);
     itemsName = nameList;
  }

   @Override
    public RecyclerViewAdapter.ItemHolder onCreateViewHolder(ViewGroup parent, int viewType) {
     View itemView = layoutInflater.inflate(R.layout.text_view,parent, false);
     return new ItemHolder(itemView, this);
  }

   @Override
    public void onBindViewHolder(RecyclerViewAdapter.ItemHolder holder, int position) {
       holder.setItemName(itemsName.get(position));

   }

   @Override
   public int getItemCount() {
       return itemsName.size();
   }

    public void setOnItemClickListener(OnItemClickListener listener){
         onItemClickListener = listener;
    }

     public OnItemClickListener getOnItemClickListener(){
          return onItemClickListener;
      }

     public interface OnItemClickListener{
           public void onItemClick(ItemHolder item, int position);
    }

    public static class ItemHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

private RecyclerViewAdapter parent;
TextView textItemName;

public ItemHolder(View itemView, RecyclerViewAdapter parent) {
    super(itemView);
    itemView.setOnClickListener(this);
    this.parent = parent;
    textItemName = (TextView) itemView.findViewById(R.id.textview);
}

public void setItemName(CharSequence name){
    textItemName.setText(name);
}

public CharSequence getItemName(){
    return textItemName.getText();
}

@Override
public void onClick(View v) {
    final OnItemClickListener listener = parent.getOnItemClickListener();
    if(listener != null){
        listener.onItemClick(this, getPosition());
    }
}
  }}
公共类RecycleServiceAdapter扩展了RecyclerView.Adapter{
私有列表项名称;
私有OnItemClickListener OnItemClickListener;
私人停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场;
公共RecycleServiceAdapter(上下文、ArrayList名称列表){
layoutInflater=layoutInflater.from(上下文);
itemsName=名称列表;
}
@凌驾
public RecycleServiceAdapter.ItemHolder onCreateViewHolder(视图组父级,int-viewType){
View itemView=LayoutFlater.充气(R.layout.text\u视图,父视图,false);
返回新的ItemHolder(itemView,此);
}
@凌驾
BindViewHolder上的公共无效(RecycleServiceAdapter.ItemHolder,int位置){
holder.setItemName(itemsName.get(position));
}
@凌驾
public int getItemCount(){
返回itemsName.size();
}
公共void setOnItemClickListener(OnItemClickListener侦听器){
McClickListener=监听器;
}
公共OnItemClickListener getOnItemClickListener(){
返回到监听器;
}
公共接口侦听器{
公共无效项单击(项目持有人项目,内部位置);
}
公共静态类ItemHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
私人回收服务适应父母;
TextView textItemName;
公共项目持有者(查看项目视图,RecycleServiceAdapter父级){
超级(项目视图);
setOnClickListener(这个);
this.parent=parent;
textItemName=(TextView)itemView.findViewById(R.id.TextView);
}
public void setItemName(字符序列名称){
textItemName.setText(名称);
}
public CharSequence getItemName(){
返回textItemName.getText();
}
@凌驾
公共void onClick(视图v){
final-OnItemClickListener=parent.getOnItemClickListener();
if(侦听器!=null){
onItemClick(this,getPosition());
}
}
}}

我已经从这里删除了recyclerview代码,单击按钮,您将在下一个活动中传递名称列表

public class MainActivity extends ActionBarActivity implements      
RecyclerViewAdapter.OnItemClickListener{

 EditText nameField;
 Button btnAdd;
 List<String> nameList;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   nameList = new Arraylist<>();

nameField = (EditText)findViewById(R.id.namefield);
btnAdd = (Button)findViewById(R.id.addbutton);
btnAdd.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v) {
        String newName = nameField.getText().toString();
        nameList.add(newName);
        Intent i = new Intent(getApplicationContext(),ListFromMain.class);
         intent.putStringArrayListExtra("key",nameList);
         startActivity(intent);
        Toast.makeText(MainActivity
                .this,"You added" +newName.toUpperCase()+ "in your view",Toast.LENGTH_LONG).show();

    }
});
 }

@Override
 public void onItemClick(RecyclerViewAdapter.ItemHolder item, int position) {
   Toast.makeText(this,
        "Remove " + position + " : " + item.getItemName(),
        Toast.LENGTH_SHORT).show();
}}
public类MainActivity扩展了ActionBarActivity实现
RecycleServiceAdapter.OnItemClickListener{
编辑文本名称字段;
按钮btnAdd;
名单名单;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
名称列表=新的Arraylist();
nameField=(EditText)findViewById(R.id.namefiel
    public class RecyclerViewAdapter extends     RecyclerView.Adapter<RecyclerViewAdapter.ItemHolder> {

  private List<String> itemsName;
  private OnItemClickListener onItemClickListener;
  private LayoutInflater layoutInflater;

 public RecyclerViewAdapter(Context context,ArrayList<String> nameList){
     layoutInflater = LayoutInflater.from(context);
     itemsName = nameList;
  }

   @Override
    public RecyclerViewAdapter.ItemHolder onCreateViewHolder(ViewGroup parent, int viewType) {
     View itemView = layoutInflater.inflate(R.layout.text_view,parent, false);
     return new ItemHolder(itemView, this);
  }

   @Override
    public void onBindViewHolder(RecyclerViewAdapter.ItemHolder holder, int position) {
       holder.setItemName(itemsName.get(position));

   }

   @Override
   public int getItemCount() {
       return itemsName.size();
   }

    public void setOnItemClickListener(OnItemClickListener listener){
         onItemClickListener = listener;
    }

     public OnItemClickListener getOnItemClickListener(){
          return onItemClickListener;
      }

     public interface OnItemClickListener{
           public void onItemClick(ItemHolder item, int position);
    }

    public static class ItemHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

private RecyclerViewAdapter parent;
TextView textItemName;

public ItemHolder(View itemView, RecyclerViewAdapter parent) {
    super(itemView);
    itemView.setOnClickListener(this);
    this.parent = parent;
    textItemName = (TextView) itemView.findViewById(R.id.textview);
}

public void setItemName(CharSequence name){
    textItemName.setText(name);
}

public CharSequence getItemName(){
    return textItemName.getText();
}

@Override
public void onClick(View v) {
    final OnItemClickListener listener = parent.getOnItemClickListener();
    if(listener != null){
        listener.onItemClick(this, getPosition());
    }
}
  }}