微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

单击项目时将数据从 RecyclerView 传递到 Fragment

如何解决单击项目时将数据从 RecyclerView 传递到 Fragment

我目前正在实现一个目前似乎无法正常运行的食物日记,当用户点击一个项目时打开 RecyclerView,Toast 消息会正确显示,他们导航回片段页面。 但是我想将他们点击的数据传递给上一个片段,并使用他们选择的项目适当地设置一个 TextView,请参阅下面的代码

public class InputFoodToDiary extends AppCompatActivity {
RecyclerView recyclerView;
UserDatabase userDatabase;
ArrayList<String> FoodID,FoodName,Calories;

CustomAdapter customAdapter;

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

    recyclerView = findViewById(R.id.recyclerView_InputFood);

    userDatabase = new UserDatabase(InputFoodToDiary.this,"CALTOR",null,1);

    FoodID = new ArrayList<>();
    FoodName = new ArrayList<>();
    Calories = new ArrayList<>();

    storeDataInArrays();

    customAdapter = new CustomAdapter(InputFoodToDiary.this,FoodID,Calories,new CustomAdapter.OnItemClickListener() {
        @Override
        public void onItemClick(View view,int position) {
            Toast.makeText(getApplicationContext(),Calories.get(position),Toast.LENGTH_SHORT).show();
            onBackpressed();
        }
    });
    recyclerView.setAdapter(customAdapter);
    recyclerView.setLayoutManager(new linearlayoutmanager(InputFoodToDiary.this));
}

void storeDataInArrays(){
    Cursor cursor = userDatabase.readAllData();
    if(cursor.getCount() == 0){
        Toast.makeText(this,"No Data.",Toast.LENGTH_SHORT).show();
    } else {
        while (cursor.movetoNext()){
            FoodID.add(cursor.getString(0));
            FoodName.add(cursor.getString(1));
            Calories.add(cursor.getString(2));
        }
    }
}

public void onBackpressed(){
    super.onBackpressed();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.food_search,menu);

    MenuItem searchItem = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView)searchItem.getActionView();

    searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);

    searchView.setonQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            customAdapter.getFilter().filter(newText);
            return false;
        }
    });
    return true;
}

}

解决方法

据我所知,您不使用片段,而是使用活动。当从活动中调用 back press 时,它会自行关闭。解决方案是在您的活动下的片段中使用回收器视图,当您单击回收器视图中的项目时,将数据保存在父活动的成员中,而不是当片段消失时,数据将保存在家长活动,你可以用它做任何你想做的事情。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。