Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我无法让LongClick处理ListActivity_Android_Listactivity_Long Click - Fatal编程技术网

Android 我无法让LongClick处理ListActivity

Android 我无法让LongClick处理ListActivity,android,listactivity,long-click,Android,Listactivity,Long Click,我已经问过这个问题了,但是没有找到一个有效的解决方案,我已经修改了代码 有谁能帮助我并告诉我为什么我的长点击功能不起作用吗 public class InspectionActivity extends ListActivity { private Button newInspection; private static final int ACTIVITY_CREATE=0; private RMDbAdapter rmDbHelper; //private AlertDialog long

我已经问过这个问题了,但是没有找到一个有效的解决方案,我已经修改了代码

有谁能帮助我并告诉我为什么我的长点击功能不起作用吗

public class InspectionActivity extends ListActivity {
private Button newInspection;
private static final int ACTIVITY_CREATE=0;

private RMDbAdapter rmDbHelper;
//private AlertDialog longClickOptionsDialog;
private AlertDialog clickOptionsDialog;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_inspection);
    setUpViews();
    rmDbHelper = new RMDbAdapter(this);
    rmDbHelper.open();

    // Get a Cursor for the list items
    Cursor listCursor = rmDbHelper.fetchAllInspections();
    startManagingCursor(listCursor);           

    // set the custom list adapter     
    setListAdapter(new MyListAdapter(this, listCursor));

}

private void setUpViews() {
    newInspection = (Button)findViewById(R.id.new_inspection);
    newInspection.setOnClickListener(new View.OnClickListener() {                       
        public void onClick(View v) {
            createInspection();
        }
    }); 

}

// In your ListActivity class, create a new inner class that extends ResourceCursorAdapter. 
//This inner class is the custom CursorAdapter we will use to manage how data is bound to a list item:

private class MyListAdapter extends ResourceCursorAdapter { 

    public MyListAdapter(Context context, Cursor cursor) { 
        super(context, R.layout.inspection_row, cursor);

    } 

    @Override
    public void bindView(View view, Context context, Cursor cursor) { 
        TextView title = (TextView) view.findViewById(R.id.inspection_row_item_main_title);
        title.setText(cursor.getString(                            
                cursor.getColumnIndex(RMDbAdapter.INSPECTION_REF)));

        TextView description = (TextView) view.findViewById(R.id.inspection_row_item_description);        

        String companyName = RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(
                        RMDbAdapter.INSPECTION_COMPANY)), "Company unknown");
        String inspectionDate = RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(
                        RMDbAdapter.INSPECTION_DATE)), "date unknown");
        description.setText("(" + companyName + ", " + inspectionDate + ")");   
    } 
}


private void createInspection() {
    Intent i = new Intent(this, InspectionEdit.class);
    startActivityForResult(i, ACTIVITY_CREATE);
}
protected void onListItemClick(ListView l, View v, final int pos, final long id){


    Cursor cursor = (Cursor) rmDbHelper.fetchInspection(id);

    String inspectionRef = RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex( 
            RMDbAdapter.INSPECTION_REF)), "Reference unknown"); 
    String companyName = RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex( 
            RMDbAdapter.INSPECTION_COMPANY)), "company unknown"); 
    final String inspectionDialogueText = "(" + inspectionRef + ", " + companyName + ")"; 

    super.onListItemClick(l, v, pos, id);
    clickOptionsDialog = new AlertDialog.Builder(InspectionActivity.this)
    .setTitle(inspectionDialogueText)
    .setMessage(R.string.general_text_select_option)
    .setPositiveButton(R.string.general_button_open, new AlertDialog.OnClickListener(){
        public void onClick(DialogInterface dialog, int which) {
            Intent i = new Intent(InspectionActivity.this, AreaActivity.class);
            i.putExtra("intentID", id);
            startActivityForResult(i, ACTIVITY_CREATE);
            }
        })
    .setNeutralButton(R.string.general_button_edit, new AlertDialog.OnClickListener(){
        public void onClick(DialogInterface dialog, int which){
            Intent i = new Intent(InspectionActivity.this, InspectionEdit.class);
            i.putExtra("intentID", id);
            startActivityForResult(i, ACTIVITY_CREATE);
            }
        })

    .setNegativeButton(android.R.string.cancel, new AlertDialog.OnClickListener(){
        public void onClick(DialogInterface dialog, int which){
            clickOptionsDialog.cancel();
            }
        })
    .create();
    clickOptionsDialog.show();

}

protected void onListItemLongClick(ListView l, View v, final int pos, final long id){

    Cursor cursor = (Cursor) rmDbHelper.fetchInspection(id);

    String inspectionRef = RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex( 
            RMDbAdapter.INSPECTION_REF)), "Reference unknown"); 
    String companyName = RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex( 
            RMDbAdapter.INSPECTION_COMPANY)), "company unknown"); 
    final String inspectionDialogueText = "(" + inspectionRef + ", " + companyName + ")"; 

    clickOptionsDialog = new AlertDialog.Builder(InspectionActivity.this)
    .setTitle(inspectionDialogueText)
    .setMessage(R.string.general_text_select_option)
    .setPositiveButton(R.string.general_button_open, new AlertDialog.OnClickListener(){
        public void onClick(DialogInterface dialog, int which) {
            Intent i = new Intent(InspectionActivity.this, AreaActivity.class);
            i.putExtra("intentID", id);
            startActivityForResult(i, ACTIVITY_CREATE);
            }
        })
    .setNeutralButton(R.string.general_button_edit, new AlertDialog.OnClickListener(){
        public void onClick(DialogInterface dialog, int which){
            Intent i = new Intent(InspectionActivity.this, InspectionEdit.class);
            i.putExtra("intentID", id);
            startActivityForResult(i, ACTIVITY_CREATE);
            }
        })

    .setNegativeButton(android.R.string.cancel, new AlertDialog.OnClickListener(){
        public void onClick(DialogInterface dialog, int which){
            clickOptionsDialog.cancel();
            }
        })
    .create();
    clickOptionsDialog.show();
} 
非常感谢你的帮助

谢谢


Dave

将您的代码更改为此

newInspection.setOnLongClickListener(new OnLongClickListener() {
  @Override
     public boolean onLongClick(View v) {             
        return true;         
     }
 }); 
无法重写onListItemLongClick,因为它不是ListActivity的成员

您必须按如下方式设置OnItemLongClickListener:

ListView lv = getListView();
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> arg0, View arg1,int row, long arg3) {
        // your code
    }
});

这对于在普通视图上长时间单击是有效的,而不是listview中的项目。嗨,lon Aalbers-那太好了,谢谢,但是我应该把它放在我的代码中的什么地方,因为无论我放在哪里都会出现错误。@Scamparelli你不能把它放在onCreate中吗?我有一个错误:类型AdapterView中的方法setOnItemLongClickListener.OnItemLongClickListener不适用于参数new OnItemLongClickListener{},现在怎么办?@a一般尝试:新建AdapterView.OnItemLongClickListener{}