In my application that I create, I have a list of items. When the user clicks on one of these elements, a new window should open showing the information inside the element that the user clicked on. Here is my java code for that-
NoteListFragment.java
public class NoteListFragment extends Fragment {
private FloatingActionButton mFab;
private View mRootView;
private List<Note> mNotes;
private RecyclerView mRecyclerView;
private NoteListAdapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
public NoteListFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mRootView = inflater.inflate(R.layout.fragment_note_list, container, false);
mFab = (FloatingActionButton)mRootView.findViewById(R.id.fab);
mFab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getActivity(), NoteEditorActivity.class));
}
});
setupList();
return mRootView;
}
private void setupList() {
mRecyclerView = (RecyclerView) mRootView.findViewById(R.id.note_recycler_view);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(getActivity());
mRecyclerView.setLayoutManager(mLayoutManager);
final GestureDetector mGestureDetector =
new GestureDetector(getActivity(), new GestureDetector.SimpleOnGestureListener(){
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
});
mRecyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) {
View child = recyclerView.findChildViewUnder(motionEvent.getX(), motionEvent.getY());
if (child != null && mGestureDetector.onTouchEvent(motionEvent)) {
int position = recyclerView.getChildLayoutPosition(child);
Note selectedNote = mNotes.get(position);
Intent editorIntent = new Intent(getActivity(), NoteEditorActivity.class);
editorIntent.putExtra("id", selectedNote.getId());
}
System.out.print("Failed to load Editor class.");
return false;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
});
mAdapter = new NoteListAdapter(mNotes, getActivity());
mRecyclerView.setAdapter(mAdapter);
mNotes = NoteManager.newInstance(getActivity()).getAllNotes();
}
}
NoteEditorActivity.java
public class NoteEditorActivity extends AppCompatActivity {
private Toolbar mToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_note_editor);
mToolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
if (savedInstanceState == null){
Bundle args = getIntent().getExtras();
if (args != null && args.containsKey("id")){
long id = args.getLong("id", 0);
if (id > 0){
openFragment(NotePlainEditorFragment.newInstance(id), "Editor");
}
}
openFragment(NotePlainEditorFragment.newInstance(0), "Editor");
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_note_editor, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private void openFragment(final Fragment fragment, String title){
getSupportFragmentManager()
.beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.replace(R.id.container, fragment)
.addToBackStack(null)
.commit();
getSupportActionBar().setTitle(title);
}
}
For some reason, when I click on one of the items, nothing happens, and the journal says
11-26 09:45:17.963 12963-12963/com.example.simplenotepad D/ViewRootImpl: ViewPostImeInputStage processPointer 0
11-26 09:45:18.073 12963-12963/com.example.simplenotepad D/ViewRootImpl: ViewPostImeInputStage processPointer 1
What does it mean? How can i fix this? Thank!
source
share