Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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
Java 如何让gridview类在单击时调用自己,然后在另一个网格项上单击,引用另一个活动?_Java_Android_Android Intent_Gridview_Onitemclick - Fatal编程技术网

Java 如何让gridview类在单击时调用自己,然后在另一个网格项上单击,引用另一个活动?

Java 如何让gridview类在单击时调用自己,然后在另一个网格项上单击,引用另一个活动?,java,android,android-intent,gridview,onitemclick,Java,Android,Android Intent,Gridview,Onitemclick,另一个类调用下面的GridView类,该类由解析服务器的图像填充,如果用户单击网格项,它将使用不同的绑定字符串启动相同的GridView类,以便可以从不同的解析数据库类中提取。现在,当用户单击一个GridView项目(从设置的第二个GridView)时,我希望它启动一个不同的活动类 我尝试在onItemClick中执行if/else if语句,该语句接受“PARSE_CLASS”绑定字符串,但似乎无法实现。我对android编程比较陌生,所以我不知道最好的方法 public class

另一个类调用下面的GridView类,该类由解析服务器的图像填充,如果用户单击网格项,它将使用不同的绑定字符串启动相同的GridView类,以便可以从不同的解析数据库类中提取。现在,当用户单击一个GridView项目(从设置的第二个GridView)时,我希望它启动一个不同的活动类

我尝试在onItemClick中执行if/else if语句,该语句接受“PARSE_CLASS”绑定字符串,但似乎无法实现。我对android编程比较陌生,所以我不知道最好的方法

    public class DisplayGrid extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

    GridView gridView = null;
    List<ParseObject> obj;
    ProgressDialog loadProgress;
    GridViewAdapter adapter;
    Bundle extras = new Bundle();
    GridViewAdapter itemGridAdapter;
    private List<ImageList> imageArrayList = null;
    private List<String> categoryNameArrayList = null;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ws_display_grid);
        imageArrayList = new ArrayList<ImageList>();
        categoryNameArrayList = new ArrayList<String>();
        gridView = (GridView) findViewById(R.id.gridView);
        itemGridAdapter = new GridViewAdapter(DisplayGrid.this, imageArrayList);
        gridView.setAdapter(itemGridAdapter);



        new RemoteDataTask().execute();

        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            Intent i = getIntent();
            Bundle itemExtras = i.getExtras();
            final String activeSupplier = itemExtras.getString("SUPPLIER");
            String parseClass = extras.getString("PARSE_CLASS");

            @Override
            public void onItemClick(AdapterView<?> arg0, View v, int position,
                                    long arg3) {
                    Intent t = new Intent(getApplicationContext(), DisplayGrid.class);
                    extras.putString("SUPPLIER", activeSupplier);
                    extras.putString("PARSE_CLASS", "Items");
                    t.putExtras(extras);
                    startActivity(t);

            }
        });
    }//end onCreate method


    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }

    @Override
    public void onStart() {
        super.onStart();
    }

    @Override
    public void onStop() {
        super.onStop();
    }


    //RemoteDataTask
    private class RemoteDataTask extends AsyncTask<Void, Void, Void> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            loadProgress = new ProgressDialog(DisplayGrid.this);
            loadProgress.setTitle("Images");
            loadProgress.setMessage("Loading...");
            loadProgress.setIndeterminate(false);
            loadProgress.show();
        }

        @Override
        protected Void doInBackground(Void... params) {


            try {
                Intent i = getIntent();
                Bundle extras = i.getExtras();

                String parseClass = extras.getString("PARSE_CLASS");
                String activeSupplier = extras.getString("SUPPLIER");

                String category;

                ParseQuery<ParseObject> query = new ParseQuery<>(parseClass);
                query.whereEqualTo("username", activeSupplier);
                obj = query.find();
                if (parseClass == "Items") {
                    category = extras.getString("CATEGORY");
                    query.whereEqualTo("category", category);

                }
                for (ParseObject categories : obj) {
                    //get image
                    ParseFile image = (ParseFile) categories.get("image");
                    ImageList gridBlock = new ImageList();
                    gridBlock.setImage(image.getUrl());
                    imageArrayList.add(gridBlock);
                    Log.i("AppInfo", "image sent to imageArrayList");

                    String categoryName = null;
                    //get category name
                    if (categoryName == null) {

                    } else {
                        categoryName = categories.getString("categoryName");
                        categoryNameArrayList.add(categoryName);
                        Log.i("AppInfo", categoryName);
                    }
                }
            } catch (ParseException e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            gridView = (GridView) findViewById(R.id.gridView);
            adapter = new GridViewAdapter(DisplayGrid.this, imageArrayList);
            gridView.setAdapter(adapter);
            loadProgress.dismiss();
            Log.i("AppInfo", "CategoryGrid Populated");
        }


    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == 1 && resultCode == RESULT_OK && data != null) {
            Uri selectedImage = data.getData();
            try {
                Bitmap bitmapImage =
                        MediaStore.Images.Media.getBitmap
                                (this.getContentResolver(), selectedImage);

                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, stream);
                byte[] byteArray = stream.toByteArray();

                //convert to parse file
                ParseFile file = new ParseFile("Img.png", byteArray);

                ParseObject object = new ParseObject("Categories");
                object.put("username", ParseUser.getCurrentUser().getUsername());
                object.put("image", file);

                object.saveInBackground(new SaveCallback() {
                    @Override
                    public void done(ParseException e) {
                        if (e == null) {
                            Toast.makeText(getApplication().getBaseContext(), "Your image has been saved", Toast.LENGTH_SHORT).show();
                        } else {
                            Toast.makeText(getApplication().getBaseContext(), "Upload failed, please try again", Toast.LENGTH_SHORT).show();
                        }
                    }
                });
            } catch (IOException e) {
                e.printStackTrace();
                Toast.makeText(getApplication().getBaseContext(), "Upload failed, please try again", Toast.LENGTH_SHORT).show();
            }
        }
    }

    //begin getTitle method

    //begin createMenu
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        new MenuInflater(getApplication())
                .inflate(R.menu.options, menu);

        return (super.onCreateOptionsMenu(menu));
    }
    //end createMenu

    //begin onOptionsItemSelected
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {


        if (item.getItemId() == R.id.manufacturers) {
            Intent i = new Intent(getApplicationContext(), SupplierList.class);
            startActivity(i);
            return true;
        } else if (item.getItemId() == R.id.add) {
            Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(i, 1);
            return true;
        } else if (item.getItemId() == R.id.sign_out) {
            ParseUser.logOut();

            Intent i = new Intent(getApplicationContext(), MainActivity.class);
            startActivity(i);
            return true;
        }

        return (super.onOptionsItemSelected(item));
    }
    //end onOptionsItemSelected
}
而不是

if(parseClass == "Categories"){}
我觉得自己像个白痴,希望其他人能从长期的灾难性努力中获益

gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        Intent t = getIntent();
        Bundle itemExtras = t.getExtras();
        String activeSupplier = itemExtras.getString("SUPPLIER");
        String parseClass = itemExtras.getString("PARSE_CLASS");

        @Override
        public void onItemClick(AdapterView<?> arg0, View v, int position,
                                long arg3) {
            Log.i("AppInfo", parseClass);

            if (parseClass.equals("Categories")) {
                Log.i("AppInfo", parseClass);
                Intent t = new Intent(getApplicationContext(), DisplayGrid.class);
                String categoryName = categoryNameArrayList.get(position);

                itemExtras.putString("SUPPLIER", activeSupplier);
                itemExtras.putString("PARSE_CLASS", "Items");
                itemExtras.putString("CATEGORY_NAME", categoryName);
                t.putExtras(itemExtras);
                startActivity(t);
            } else if (parseClass.equals("Items")) {
                Intent t = new Intent(getApplicationContext(), ItemDisplay.class);
                //extras.putString("SUPPLIER", activeSupplier);
                //extras.putString("PARSE_CLASS", "Items");
                //t.putExtras(extras);
                startActivity(t);
            }
        }
    });
gridView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
Intent t=getIntent();
Bundle itemExtras=t.getExtras();
String activeSupplier=itemExtras.getString(“供应商”);
String parseClass=itemExtras.getString(“PARSE_CLASS”);
@凌驾
公共视图单击(AdapterView arg0,视图v,内部位置,
长arg3){
Log.i(“AppInfo”,parseClass);
if(parseClass.equals(“类别”)){
Log.i(“AppInfo”,parseClass);
Intent t=newintent(getApplicationContext(),DisplayGrid.class);
String categoryName=categoryNameArrayList.get(位置);
itemExtras.putString(“供应商”,活动供应商);
putString(“PARSE_CLASS”,“Items”);
itemExtras.putString(“类别名称”,类别名称);
t、 额外支出(项目额外支出);
星触觉(t);
}else if(parseClass.equals(“Items”)){
Intent t=新的Intent(getApplicationContext(),ItemDisplay.class);
//额外输入字符串(“供应商”,活动供应商);
//额外putString(“PARSE_CLASS”,“Items”);
//t、 临时演员(临时演员);
星触觉(t);
}
}
});
公共类DisplayGrid扩展AppCompative活动实现AdapterView.OnItemSelectedListener{
GridView GridView=null;
列出obj;
进步对话;进步;
GridViewAdapter;
Bundle extras=新Bundle();
GridViewAdapter项GridAdapter;
私有列表imageArrayList=null;
私有列表categoryNameArrayList=null;
供应商;
字符串解析类;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.ws_display_grid);
imageArrayList=新建ArrayList();
categoryNameArrayList=新ArrayList();
Intent i=getIntent();
if(null!=i){
Bundle itemExtras=i.getExtras();
activeSupplier=itemExtras.getString(“供应商”);
parseClass=itemExtras.getString(“PARSE_类”);
}
RemoteDataTask remoteDataAsync=新的RemoteDataTask();
remoteDataAsync.execute();
if(remoteDataAsync.getStatus()==AsyncTask.Status.PENDING){
//我的任务尚未开始
}
if(remoteDataAsync.getStatus()==AsyncTask.Status.RUNNING){
//我的AsyncTask当前正在doInBackground()中工作
}
if(remoteDataAsync.getStatus()==AsyncTask.Status.FINISHED){
//我的AsyncTask已完成,onPostExecute已调用
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共视图单击(AdapterView arg0,视图v,内部位置,
长arg3){
Intent t=newintent(getApplicationContext(),DisplayGrid.class);
额外输入字符串(“供应商”,活动供应商);
putString(“PARSE_类”,parseClass);
t、 临时演员(临时演员);
星触觉(t);
}
});
}
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
}
@凌驾
未选择公共无效(AdapterView父级){
}
@凌驾
public void onStart(){
super.onStart();
}
@凌驾
公共void onStop(){
super.onStop();
}
//远程数据任务
私有类RemoteDataTask扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
loadProgress=newprogressdialog(DisplayGrid.this);
loadProgress.setTitle(“图像”);
setMessage(“正在加载…”);
loadProgress.setUndeminate(false);
loadProgress.show();
}
@凌驾
受保护的Void doInBackground(Void…参数){
试一试{
Intent i=getIntent();
Bundle extras=i.getExtras();
String parseClass=extras.getString(“PARSE_CLASS”);
String activeSupplier=extras.getString(“供应商”);
字符串类别;
ParseQuery查询=新的ParseQuery(parseClass);
查询。whereEqualTo(“用户名”,活动供应商);
obj=query.find();
如果(parseClass==“项目”){
category=extras.getString(“category”);
查询:whereEqualTo(“类别”,类别);
}
用于(对象类别:obj){
//获取图像
ParseFile image=(ParseFile)categories.get(“image”);
ImageList gridBlock=新建ImageList();
setImage(image.getUrl());
if(parseClass == "Categories"){}
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        Intent t = getIntent();
        Bundle itemExtras = t.getExtras();
        String activeSupplier = itemExtras.getString("SUPPLIER");
        String parseClass = itemExtras.getString("PARSE_CLASS");

        @Override
        public void onItemClick(AdapterView<?> arg0, View v, int position,
                                long arg3) {
            Log.i("AppInfo", parseClass);

            if (parseClass.equals("Categories")) {
                Log.i("AppInfo", parseClass);
                Intent t = new Intent(getApplicationContext(), DisplayGrid.class);
                String categoryName = categoryNameArrayList.get(position);

                itemExtras.putString("SUPPLIER", activeSupplier);
                itemExtras.putString("PARSE_CLASS", "Items");
                itemExtras.putString("CATEGORY_NAME", categoryName);
                t.putExtras(itemExtras);
                startActivity(t);
            } else if (parseClass.equals("Items")) {
                Intent t = new Intent(getApplicationContext(), ItemDisplay.class);
                //extras.putString("SUPPLIER", activeSupplier);
                //extras.putString("PARSE_CLASS", "Items");
                //t.putExtras(extras);
                startActivity(t);
            }
        }
    });
public class DisplayGrid extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

    GridView gridView = null;
    List<ParseObject> obj;
    ProgressDialog loadProgress;
    GridViewAdapter adapter;
    Bundle extras = new Bundle();
    GridViewAdapter itemGridAdapter;
    private List<ImageList> imageArrayList = null;
    private List<String> categoryNameArrayList = null;
    String activeSupplier;
    String parseClass;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ws_display_grid);
        imageArrayList = new ArrayList<ImageList>();
        categoryNameArrayList = new ArrayList<String>();
        Intent i = getIntent();
        if (null != i) {
            Bundle itemExtras = i.getExtras();
            activeSupplier = itemExtras.getString("SUPPLIER");
            parseClass = itemExtras.getString("PARSE_CLASS");
        }
        RemoteDataTask remoteDataAsync = new RemoteDataTask();
        remoteDataAsync.execute();

        if(remoteDataAsync.getStatus() == AsyncTask.Status.PENDING){
            // My AsyncTask has not started yet
        }

        if(remoteDataAsync.getStatus() == AsyncTask.Status.RUNNING){
            // My AsyncTask is currently doing work in doInBackground()
        }

        if(remoteDataAsync.getStatus() == AsyncTask.Status.FINISHED){
            // My AsyncTask is done and onPostExecute was called
            gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {


                @Override
                public void onItemClick(AdapterView<?> arg0, View v, int position,
                                        long arg3) {
                    Intent t = new Intent(getApplicationContext(), DisplayGrid.class);
                    extras.putString("SUPPLIER", activeSupplier);
                    extras.putString("PARSE_CLASS", parseClass);
                    t.putExtras(extras);
                    startActivity(t);

                }
            });
        }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }

    @Override
    public void onStart() {
        super.onStart();
    }

    @Override
    public void onStop() {
        super.onStop();
    }


    //RemoteDataTask
    private class RemoteDataTask extends AsyncTask<Void, Void, Void> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            loadProgress = new ProgressDialog(DisplayGrid.this);
            loadProgress.setTitle("Images");
            loadProgress.setMessage("Loading...");
            loadProgress.setIndeterminate(false);
            loadProgress.show();
        }

        @Override
        protected Void doInBackground(Void... params) {


            try {
                Intent i = getIntent();
                Bundle extras = i.getExtras();

                String parseClass = extras.getString("PARSE_CLASS");
                String activeSupplier = extras.getString("SUPPLIER");

                String category;

                ParseQuery<ParseObject> query = new ParseQuery<>(parseClass);
                query.whereEqualTo("username", activeSupplier);
                obj = query.find();
                if (parseClass == "Items") {
                    category = extras.getString("CATEGORY");
                    query.whereEqualTo("category", category);

                }
                for (ParseObject categories : obj) {
                    //get image
                    ParseFile image = (ParseFile) categories.get("image");
                    ImageList gridBlock = new ImageList();
                    gridBlock.setImage(image.getUrl());
                    imageArrayList.add(gridBlock);
                    Log.i("AppInfo", "image sent to imageArrayList");

                    String categoryName = null;
                    //get category name
                    if (categoryName == null) {

                    } else {
                        categoryName = categories.getString("categoryName");
                        categoryNameArrayList.add(categoryName);
                        Log.i("AppInfo", categoryName);
                    }
                }
            } catch (ParseException e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {

            adapter = new GridViewAdapter(DisplayGrid.this, imageArrayList);
            gridView.setAdapter(adapter);
            loadProgress.dismiss();
            Log.i("AppInfo", "CategoryGrid Populated");

        }//end onCreate method
        }


    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == 1 && resultCode == RESULT_OK && data != null) {
            Uri selectedImage = data.getData();
            try {
                Bitmap bitmapImage =
                        MediaStore.Images.Media.getBitmap
                                (this.getContentResolver(), selectedImage);

                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, stream);
                byte[] byteArray = stream.toByteArray();

                //convert to parse file
                ParseFile file = new ParseFile("Img.png", byteArray);

                ParseObject object = new ParseObject("Categories");
                object.put("username", ParseUser.getCurrentUser().getUsername());
                object.put("image", file);

                object.saveInBackground(new SaveCallback() {
                    @Override
                    public void done(ParseException e) {
                        if (e == null) {
                            Toast.makeText(getApplication().getBaseContext(), "Your image has been saved", Toast.LENGTH_SHORT).show();
                        } else {
                            Toast.makeText(getApplication().getBaseContext(), "Upload failed, please try again", Toast.LENGTH_SHORT).show();
                        }
                    }
                });
            } catch (IOException e) {
                e.printStackTrace();
                Toast.makeText(getApplication().getBaseContext(), "Upload failed, please try again", Toast.LENGTH_SHORT).show();
            }
        }
    }

    //begin getTitle method

    //begin createMenu
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        new MenuInflater(getApplication())
                .inflate(R.menu.options, menu);

        return (super.onCreateOptionsMenu(menu));
    }
    //end createMenu

    //begin onOptionsItemSelected
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {


        if (item.getItemId() == R.id.manufacturers) {
            Intent i = new Intent(getApplicationContext(), SupplierList.class);
            startActivity(i);
            return true;
        } else if (item.getItemId() == R.id.add) {
            Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(i, 1);
            return true;
        } else if (item.getItemId() == R.id.sign_out) {
            ParseUser.logOut();

            Intent i = new Intent(getApplicationContext(), MainActivity.class);
            startActivity(i);
            return true;
        }

        return (super.onOptionsItemSelected(item));
    }
    //end onOptionsItemSelected
}