簡體   English   中英

單擊項目時將數據從 RecyclerView 傳遞到 Fragment

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM