Note that there are some explanatory texts on larger screens.

plurals
  1. PORetrieving null values from List items using OnItemClickListener
    primarykey
    data
    text
    <p>Ok so I've been trying to get an OnItemClickListener to retrieve values from list items. At the moment the click is being registered but the values aren't coming through. Here're the relevant parts of my code:</p> <pre><code>public class DiarySchedule extends ListActivity implements OnClickListener { private DiaryDataSource datasource; private static final String TAG = "MAD Diary Schedule"; private String delTitle; private String delDate; private String delTime; private String editTitle; private String editDate; private String editTime; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.diary_schedule); datasource = new DiaryDataSource(this); datasource.open(); List&lt;DiaryEntry&gt; values = datasource.getAllDiaryEntries(); DiaryScheduleAdapter adapter = new DiaryScheduleAdapter(this,values); setListAdapter(adapter); registerForContextMenu(getListView()); } public class DiaryScheduleAdapter extends ArrayAdapter&lt;DiaryEntry&gt; { private LayoutInflater li; public DiaryScheduleAdapter(Context context, List&lt;DiaryEntry&gt; values) { super(context, 0, values); li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public View getView(int position, View convertView, ViewGroup parent) { DiaryEntry diaryEntry = getItem(position); View v = convertView; if ( v == null ) { v = li.inflate(R.layout.diary_schedule, null); } TextView date = (TextView)v.findViewById(R.id.scheduleListDate); String initialDate = diaryEntry.getDate(); String formattedDate = ConvertToDate(initialDate); date.setText(formattedDate); TextView link = (TextView)v.findViewById(R.id.scheduleListLink); link.setText(" at "); TextView time = (TextView)v.findViewById(R.id.scheduleListTime); time.setText(diaryEntry.getTime()); TextView title = (TextView)v.findViewById(R.id.scheduleListTitle); title.setText(diaryEntry.getTitle()); v.setOnClickListener(new OnItemClickListener(position)); return v; } } @Override public boolean onCreateOptionsMenu (Menu menu) { new MenuInflater(getApplication()).inflate(R.menu.diary_menu, menu); return (super.onCreateOptionsMenu(menu)); } @Override public boolean onOptionsItemSelected (MenuItem item) { switch (item.getItemId()) { case R.id.add: Intent intent = new Intent(DiarySchedule.this, DiaryAddEntry.class); startActivity(intent); break; } return super.onOptionsItemSelected(item); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.diary_context_menu, menu); } @Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); switch (item.getItemId()) { case R.id.edit: Intent editIntent = new Intent(DiarySchedule.this, DiaryEditEntry.class); editTitle = (String) ((TextView) info.targetView.findViewById(R.id.scheduleListTitle)).getText(); editDate = (String) ((TextView) info.targetView.findViewById(R.id.scheduleListDate)).getText(); editDate = GetInfoConvertToDate(editDate); editTime = (String) ((TextView) info.targetView.findViewById(R.id.scheduleListTime)).getText(); editIntent.putExtra("title", editTitle); editIntent.putExtra("date", editDate); editIntent.putExtra("time", editTime); startActivity(editIntent); break; case R.id.delete: delTitle = (String) ((TextView) info.targetView.findViewById(R.id.scheduleListTitle)).getText(); delDate = (String) ((TextView) info.targetView.findViewById(R.id.scheduleListDate)).getText(); delDate = GetInfoConvertToDate(delDate); delTime = (String) ((TextView) info.targetView.findViewById(R.id.scheduleListTime)).getText(); Log.v(TAG, "Hopefully title is: " + delTitle + " with date of " + delDate + " and time of " + delTime); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Are you sure?").setPositiveButton("Yes", dialogClickListener) .setNegativeButton("No", dialogClickListener).show(); break; } return super.onContextItemSelected(item); } DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case DialogInterface.BUTTON_POSITIVE: datasource.deleteDiaryEntry(delTitle, delDate, delTime); // IN CASE NEED TO DELETE ALL DB ENTRIES UNCOMMENT THIS // (AND COMMENT THE ABOVE METHOD) //datasource.deleteAll(); Intent intent = new Intent(DiarySchedule.this, DiarySchedule.class); startActivity(intent); break; case DialogInterface.BUTTON_NEGATIVE: // No action taken break; } } }; @Override public void onClick(View v) { // TODO Auto-generated method stub } private class OnItemClickListener implements OnClickListener { private int mPosition; OnItemClickListener(int position) { mPosition = position; } @Override public void onClick(View v) { Log.v(TAG, "onItemClick at position" + mPosition); final String title = (String) ((TextView) findViewById(R.id.scheduleListTitle)).getText(); System.out.println("Title is: " + title); String date = (String) ((TextView) findViewById(R.id.scheduleListDate)).getText(); date = GetInfoConvertToDate(date); System.out.println("Date is: " + date); final String time = (String) ((TextView) findViewById(R.id.scheduleListTime)).getText(); System.out.println("Time is: " + time); Intent descIntent = new Intent(DiarySchedule.this, DiaryDetailed.class); descIntent.putExtra("title", title); descIntent.putExtra("date", date); descIntent.putExtra("time", time); startActivity(descIntent); } } } </code></pre> <p>When debugging it reaches the OnItemClickListener OnClick method, go through it properly but just doesn't pick up the values, which come out empty. Any ideas? Thanks</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload