OnItemLongClickListener is not working

  • Replies:0
Patrick Liss
  • Forum posts: 1

Apr 19, 2014, 7:10:57 PM via Website

I cannot find the reason for which long click doesn't work. There are no errors reported and code looks right. If anybody has an idea why I am unable to launch Dialog file it would be very much appreciated. Here is my dialog file:

package com.example.classorganizer;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

class EditListItemDialog extends Dialog implements View.OnClickListener {

private View editText;

public EditListItemDialog(Context context) {
    super(context);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.edit_text_dialog);//here is your xml with EditText and 'Ok' and 'Cancel' buttons
    View btnOk = findViewById(R.id.button_ok);
    editText = findViewById(R.id.edit_text);
    btnOk.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    ((TextView) editText).getText().toString();//here is your updated(or not updated) text
    dismiss();
}
}

And here is the main file which lists sqlite rows and where OnItemLongClick should work:

package com.example.classorganizer;


import java.util.ArrayList;

import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

import com.cookbook.data.Constants;
import com.cookbook.data.MyDB;




public class Monday extends ListActivity {



private static final int MyMenu = 0;
MyDB dba;
DiaryAdapter myAdapter;

private class MyDiary{
public MyDiary(String t, String c){
    title=t;
    content=c;

    ListView listView = new ListView(Monday.this);
    listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            new EditListItemDialog(view.getContext()).show();
            return true;

        }
    });


}

public String title;
public String content;

}
@Override
protected void onCreate(Bundle savedInstanceState) {
dba = new MyDB(this);
dba.open();
setContentView(R.layout.fragment_monday);



super.onCreate(savedInstanceState);
myAdapter = new DiaryAdapter(this);
this.setListAdapter(myAdapter);
}



private class DiaryAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private ArrayList<MyDiary> fragment_monday;
public DiaryAdapter(Context context) {
    mInflater = LayoutInflater.from(context);
    fragment_monday = new ArrayList<MyDiary>();
    getdata();


}

public void getdata(){
    Cursor c = dba.getdiaries();
    startManagingCursor(c);
    if(c.moveToFirst()){
        do{
            String title =
                    c.getString(c.getColumnIndex(Constants.TITLE_NAME));
            String content =
                    c.getString(c.getColumnIndex(Constants.CONTENT_NAME));

            MyDiary temp = new MyDiary(title,content);
            fragment_monday.add(temp);
        } while(c.moveToNext());
    }

}



@Override
public int getCount() {return fragment_monday.size();}
public MyDiary getItem(int i) {return fragment_monday.get(i);}
public long getItemId(int i) {return i;}
public View getView(int arg0, View arg1, ViewGroup arg2) {
    final ViewHolder holder;

    View v = arg1;
    if ((v == null) || (v.getTag() == null)) {
        v = mInflater.inflate(R.layout.diaryrow,  null);
        holder = new ViewHolder();
        holder.mTitle = (TextView)v.findViewById(R.id.name);

        v.setTag(holder);
    } else {
        holder = (ViewHolder) v.getTag();
    }

    holder.mdiary = getItem(arg0);
    holder.mTitle.setText(holder.mdiary.title);


    v.setTag(holder);

    return v;


}

public class ViewHolder {
    MyDiary mdiary;
    TextView mTitle;


}

}




/** Called when the user clicks the Edit button */
public void visitDiary(View view) {
Intent intent = new Intent(this, Diary.class);
startActivity(intent);
}
/** Called when the user clicks the back button */
public void visitSchedule(View view) {
Intent intent = new Intent(this, DisplayScheduleScreen.class);
startActivity(intent);
}


}

I am absolutely frustrated now since this doesn't let me sleep for couple of days now. I believe that Dialog file does not kickstart at all since the edid menu should appear upon long click, but nothing happens. Thanks for your help.

Reply