[英]Passing Data from RecyclerView to Fragment when Item is Clicked
我目前正在實施一個食物日記,目前似乎無法正常運行,當用戶單擊一個項目時打開 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, FoodName, 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;
}
}
從我看到你不使用片段,你正在使用活動。 當從活動中調用后按時,它會自行關閉。 解決方案是將回收器視圖放在您的活動下的片段中,當您單擊回收器視圖中的項目時,將數據保存在父活動的成員中,而不是當片段消失時,數據將保存在父活動,你可以用它做任何你想做的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.