【问题标题】:How can I pass data from one activity and then retrieved in another activity's recyclerview?如何从一个活动传递数据,然后在另一个活动的 recyclerview 中检索?
【发布时间】:2018-08-11 03:28:05
【问题描述】:

我想将编辑后的文本值从一个活动传递到另一个活动,然后显示在recyclerView中。This is the errors I have

可能我必须把值放在等号下面吗?但我不知道如何将编辑后的文本值放入其中。

我想从这个类传递数据

public class addEvent extends AppCompatActivity {

public void addEvent(View view){

    EditText timeEditText = findViewById(R.id.timeEditText);
    EditText descriptionEditText = findViewById(R.id.descriptionEditText);

    Intent intent = new Intent(getApplicationContext(), events.class);
    String timeInfo = timeEditText.getText().toString();
    String descriptionInfo = descriptionEditText.getText().toString();
    intent.putExtra("time", timeInfo );
    intent.putExtra("description", descriptionInfo);

}

public void events(View view){

    Intent intent1 = new Intent(getApplicationContext(), events.class);
    startActivity(intent1);
}



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_event);
}
}

这是视图活动

public class events extends AppCompatActivity {

private RecyclerView recyclerView;
private RecyclerView.Adapter adapter;
private List<ListItem> listItems;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_events);

    recyclerView = findViewById(R.id.recyclerViewID);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    Bundle bundle = getIntent().getExtras();
    String time = bundle.getString("time");
    String description = bundle.getString("description");
    listItems = new ArrayList<>();

            listItems = new ArrayList<>();
            ListItem item = new ListItem(time, "d");

            listItems.add(item);





    adapter = new MyAdapter(this, listItems);
    recyclerView.setAdapter(adapter);


}
}

这是适配器类

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

private Context context;
private List<ListItem> listitem;

public MyAdapter(Context context, List listitems){

    this.context = context;
    this.listitem = listitems;

}


@NonNull
@Override
public MyAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_row, viewGroup, false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull MyAdapter.ViewHolder viewHolder, int i) {

    ListItem item = listitem.get(i);
    viewHolder.time.setText(item.getTime());
    viewHolder.description.setText(item.getDescription());

}

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

public class ViewHolder extends RecyclerView.ViewHolder {

    public TextView time;
    public TextView description;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);

        time = itemView.findViewById(R.id.time);
        description = itemView.findViewById(R.id.description);
    }
}
}

这是模型类

public class ListItem {

private String time;
private String description;

public ListItem(String time, String description) {

    this.time = time;
    this.description = description;

}


public String getTime() {
    return time;
}

public void setTime(String time) {
    this.time = time;
}

public String getDescription() {
    return description;
}

public void setDescription(String description) {
    this.description = description;
}


}

【问题讨论】:

    标签: java android android-intent android-recyclerview


    【解决方案1】:

    您必须在定义附加功能的同一范围内调用 startActivity:

    public void addEvent(View view){
    
        EditText timeEditText = findViewById(R.id.timeEditText);
        EditText descriptionEditText = findViewById(R.id.descriptionEditText);
    
        Intent intent = new Intent(getApplicationContext(), events.class);
        String timeInfo = timeEditText.getText().toString();
        String descriptionInfo = descriptionEditText.getText().toString();
        intent.putExtra("time", timeInfo );
        intent.putExtra("description", descriptionInfo);
        startActivity(intent);//add this
    
    
    }
    

    【讨论】:

      【解决方案2】:

      在您的 addEvent() 方法中,

      public void addEvent(View view){
          //your code
              Intent intent = new Intent(addEvent.this, events.class);
              Bundle bundle = new Bundle();
              bundle.putString("time", timeInfo);
              bundle.putString("description",descriptionInfo);
              intent.putExtras(bundle);
              startActivity(intent);
      }
      

      然后,在您的事件活动和 onCreate() 方法中,

          Bundle bundle = getIntent().getExtras();
          String time = bundle.getString("time");
          String description = bundle.getString("description");
      
          ArrayList<ListItem> arrayList = new ArrayList<>();
          ListItem listItem = new ListItem(time, description);
          arrayList.add(listItem);
          adapter = new MyAdapter(this, arrayList);
          recyclerView.setAdapter(adapter);
      

      这将完成你的工作。

      【讨论】:

        【解决方案3】:

        你想使用“getStringExtra”,而不是“getExtras/bundle”

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-27
          • 2012-07-16
          相关资源
          最近更新 更多