0
作爲noob開發人員,我開發了一個使用recyclerview填充卡片的flashcards應用程序。問題是當我使用FAB添加新卡時,我刷新了主要活動。在這裏我發現,當我點擊任何卡時,它不會顯示任何數據。調試顯示,recyclerview片段中onClick(int position)的位置增加了之前的卡片大小,因此無法查看數據。如何獲得正確的onClick位置?請幫助..Android:Recyclerview onClick(int position)在刷新時添加到之前的位置
public class CardFragment extends Fragment {
public static List<String> QArray = new ArrayList<>();
public CardFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final OnSelectFlashListner mCallback = null;
// Inflate the layout for this fragment
final RecyclerView flashRecycler = (RecyclerView) inflater.inflate(R.layout.recy_view , container, false);
try{
SQLiteOpenHelper flashCardsHelper1 = new FlashCardsHelper(getContext());
SQLiteDatabase db = flashCardsHelper1.getReadableDatabase();
Cursor cursor = db.query("Flashdata",new String[]{"question", "answer"},null,null,null,null,null);
Log.d("Flash data", DatabaseUtils.dumpCursorToString(cursor));
if (cursor.moveToFirst()){
do {
QArray.add(cursor.getString(0));
}while (cursor.moveToNext());
}
cursor.close();
db.close();
}catch (Exception e){
e.printStackTrace();
}
flashAdapter flashAdap = new flashAdapter(QArray);
flashRecycler.setAdapter(flashAdap);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
flashRecycler.setLayoutManager(linearLayoutManager);
flashAdap.setListner(new flashAdapter.Listner(){
@Override
public void onClick(int position) {
Intent intent = new Intent(getActivity(),FlashCardOpen.class);
intent.putExtra(FlashCardOpen.EXXTRA_QUESTIONNO,position);
getActivity().startActivity(intent);
}
});
Button button = (Button)flashRecycler.findViewById(R.id.btn_Add);
return flashRecycler;
}
IM通過FAB刷新主要活動:
private void loadFAB() {
FloatingActionButton fab = (FloatingActionButton)findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.dialog_box);
dialog.setTitle("Add Flash Card");
final EditText textViewQues = (EditText)dialog.findViewById(R.id.et_dialogQuestion);
final EditText textViewAns = (EditText)dialog.findViewById(R.id.et_dialogAnswer);
Button btn_cancel = (Button)dialog.findViewById(R.id.btn_cancel);
btn_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
Button btn_add = (Button)dialog.findViewById(R.id.btn_Add);
btn_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
writeToDb(textViewQues.getText().toString(),textViewAns.getText().toString());
showNotif();
Intent intent = new Intent(context,MainActivity.class);
context.startActivity(intent);
dialog.dismiss();
}
});
dialog.show();
}
});
}