Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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 在解析图像上检索文件_Java_Android_Android Layout_Android Activity_Parse Platform - Fatal编程技术网

Java 在解析图像上检索文件

Java 在解析图像上检索文件,java,android,android-layout,android-activity,parse-platform,Java,Android,Android Layout,Android Activity,Parse Platform,我已经设法将图像文件存储到parse中。我的问题在于找回它。从某种意义上说,在注册过程中,用户被要求上传一个配置文件图片,然后图像作为图像存储到parse中。我的问题在于检索它,除了提取可能匹配的名称、标题、年龄等信息外,我还希望能够检索图片 下面是代码,我在其中检索字符串信息,但我也希望在其中检索文件 public class MatchingActivity extends Activity { private String currentUserId; private Arra

我已经设法将图像文件存储到parse中。我的问题在于找回它。从某种意义上说,在注册过程中,用户被要求上传一个配置文件图片,然后图像作为图像存储到parse中。我的问题在于检索它,除了提取可能匹配的名称、标题、年龄等信息外,我还希望能够检索图片

下面是代码,我在其中检索字符串信息,但我也希望在其中检索文件

public class MatchingActivity extends Activity {

 private String currentUserId;
    private ArrayAdapter<String> namesArrayAdapter;
    private ArrayList<String> names;
    private ListView usersListView;
    private Button logoutButton;
    String userGender = ParseUser.getCurrentUser().getString("Gender");
    String activityName = ParseUser.getCurrentUser().getString("ActivityName");
    Number maxDistance = ParseUser.getCurrentUser().getNumber("Maximum_Distance");


    String userLookingGender = ParseUser.getCurrentUser().getString("Looking_Gender");
    Number minimumAge = ParseUser.getCurrentUser().getNumber("Minimum_Age");
    Number maximumAge = ParseUser.getCurrentUser().getNumber("Maximum_Age");
    Number userage = ParseUser.getCurrentUser().getNumber("Age");



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.matching);

        logoutButton = (Button) findViewById(R.id.logoutButton);
        logoutButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ParseUser.logOut();
                Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
                startActivity(intent);
            }
        });

        setConversationsList();
    }
    private void setConversationsList() {
        currentUserId = ParseUser.getCurrentUser().getObjectId();
        names = new ArrayList<String>();
      // String userActivitySelectionName = null;

           ParseQuery<ParseUser> query = ParseUser.getQuery();

         //  query.whereEqualTo("ActivityName",userActivitySelectionName);

           query.whereNotEqualTo("objectId", ParseUser.getCurrentUser().getObjectId());
           // users with Gender = currentUser.Looking_Gender
           query.whereEqualTo("Gender", userLookingGender);
           // users with Looking_Gender = currentUser.Gender
           query.whereEqualTo("Looking_Gender", userGender);
           query.setLimit(1);
           query.whereEqualTo("ActivityName", activityName);
           query.whereGreaterThanOrEqualTo("Minimum_Age", minimumAge).whereGreaterThanOrEqualTo("Age", userage);
           query.whereLessThanOrEqualTo("Maximum_Age", maximumAge).whereLessThanOrEqualTo("Age", userage);
  //  query.whereWithinKilometers("Maximum_Distance", point, maxDistance)





        query.findInBackground(new FindCallback<ParseUser>() {

            public void done(List<ParseUser> userList, ParseException e) {
                if (e == null) {
                    for (int i=0; i<userList.size(); i++) {
                        names.add(userList.get(i).get("Name").toString());
                        names.add(userList.get(i).get("Headline").toString());
                        names.add(userList.get(i).get("Age").toString());

                 //       names.add(userList.get(i).getParseObject("ProfilePicture").;


                    }




                    usersListView = (ListView)findViewById(R.id.usersListView);
                    namesArrayAdapter =
                        new ArrayAdapter<String>(getApplicationContext(),
                            R.layout.user_list_item, names);
                    usersListView.setAdapter(namesArrayAdapter);

                    usersListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> a, View v, int i, long l) {
                            openConversation(names, i);
                        }
                    });

                } else {
                    Toast.makeText(getApplicationContext(),
                        "Error loading user list",
                            Toast.LENGTH_LONG).show();
                }
            }
        });
    }

    public void openConversation(ArrayList<String> names, int pos) {
        ParseQuery<ParseUser> query = ParseUser.getQuery();
        query.whereEqualTo("Name", names.get(pos));
        query.findInBackground(new FindCallback<ParseUser>() {
           public void done(List<ParseUser> user, ParseException e) {
               if (e == null) {
                   Intent intent = new Intent(getApplicationContext(), MessagingActivity.class);
                   intent.putExtra("RECIPIENT_ID", user.get(0).getObjectId());
                   startActivity(intent);
               } else {
                   Toast.makeText(getApplicationContext(),
                       "Error finding that user",
                           Toast.LENGTH_SHORT).show();
               }
           }
        });
    }
}
活动代码

public class Fragment1 extends Fragment {

    private String currentUserId;
    private ArrayAdapter<String> namesArrayAdapter;
    private ArrayList<String> names;
    private ListView usersListView;
    private Button logoutButton;
    String userGender = ParseUser.getCurrentUser().getString("Gender");
    String activityName = ParseUser.getCurrentUser().getString("ActivityName");
    Number maxDistance = ParseUser.getCurrentUser().getNumber("Maximum_Distance");
    String userLookingGender = ParseUser.getCurrentUser().getString("Looking_Gender");
    Number minimumAge = ParseUser.getCurrentUser().getNumber("Minimum_Age");
    Number maximumAge = ParseUser.getCurrentUser().getNumber("Maximum_Age");
    Number userage = ParseUser.getCurrentUser().getNumber("Age");

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        setConversationsList();

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment1_layout, container, false);


        return view;
    }

private void setConversationsList() {
    currentUserId = ParseUser.getCurrentUser().getObjectId();
    names = new ArrayList<String>();
    // String userActivitySelectionName = null;

    ParseQuery<ParseUser> query = ParseUser.getQuery();

    //  query.whereEqualTo("ActivityName",userActivitySelectionName);

    query.whereNotEqualTo("objectId", ParseUser.getCurrentUser().getObjectId());
    // users with Gender = currentUser.Looking_Gender
    query.whereEqualTo("Gender", userLookingGender);
    // users with Looking_Gender = currentUser.Gender
    query.whereEqualTo("Looking_Gender", userGender);
    query.setLimit(1);
    query.whereEqualTo("ActivityName", activityName);
    //query.whereGreaterThanOrEqualTo("Age", minimumAge);
    //query.whereLessThanOrEqualTo("Age", maximumAge);
    query.orderByDescending("Name");




    query.findInBackground(new FindCallback<ParseUser>() {

        public void done(List<ParseUser> userList, ParseException e) {
            if (e == null) {
                for (int i=0; i<userList.size(); i++) {
                    names.add(userList.get(i).get("Name").toString());
                    names.add(userList.get(i).get("Headline").toString());

                    ParseFile image = (ParseFile) userData.getParseFile("ProfilePicture");

                    //call the function 

                    displayImage(image, image_expert);
                    //and here is the function

                        private void displayImage(ParseFile thumbnail, final ImageView img) {

                            if (thumbnail != null) {
                                thumbnail.getDataInBackground(new GetDataCallback() {

                                    @Override
                                    public void done(byte[] data, ParseException e) {

                                        if (e == null) {
                                            Bitmap bmp = BitmapFactory.decodeByteArray(data, 0,
                                                    data.length);

                                            if (bmp != null) {

                                                Log.e("parse file ok", " null");
                                                img.setImageBitmap(Bitmap.createScaledBitmap(bmp,
                                                (display.getWidth() / 5),
                                                (display.getWidth() /50), false));
                                                img.setImageBitmap(getRoundedCornerBitmap(bmp, 10));
                                                img.setPadding(10, 10, 0, 0);



                                            }
                                        } else {
                                            Log.e("paser after downloade", " null");
                                        }

                                    }
                                });
                            } else {

                                Log.e("parse file", " null");

                                // img.setImageResource(R.drawable.ic_launcher);

                                img.setPadding(10, 10, 10, 10);
                            }

                        }
                        names.add(userList.get(i).get("Age").toString());
                        names.add(userList.get(i).get("ActivityName").toString());


                    //       names.add(userList.get(i).getParseObject("ProfilePicture").;


                }




                usersListView = (ListView)getActivity().findViewById(R.id.userlistview);
                namesArrayAdapter =
                        new ArrayAdapter<String>(getActivity().getApplicationContext(),
                                R.layout.user_list_item, names);
                usersListView.setAdapter(namesArrayAdapter);

                usersListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> a, View v, int i, long l) {
                        openConversation(names, i);
                    }
                });

            } else {
                Toast.makeText(getActivity().getApplicationContext(),
                        "Error loading user list",
                        Toast.LENGTH_LONG).show();
            }
        }
    });
}

public void openConversation(ArrayList<String> names, int pos) {
    ParseQuery<ParseUser> query = ParseUser.getQuery();
    query.whereEqualTo("Name", names.get(pos));
    query.findInBackground(new FindCallback<ParseUser>() {
        public void done(List<ParseUser> user, ParseException e) {
            if (e == null) {
                Intent intent = new Intent(getActivity().getApplicationContext(), MessagingActivity.class);
                intent.putExtra("RECIPIENT_ID", user.get(0).getObjectId());
                startActivity(intent);
            } else {
                Toast.makeText(getActivity().getApplicationContext(),
                        "Error finding that user",
                        Toast.LENGTH_SHORT).show();
            }
        }
    });
}
}

看看下面的内容是否有帮助:

ParseUser currentUser = ParseUser.getCurrentUser();
    currentUser.fetchInBackground(new GetCallback<ParseObject>() {
        public void done(ParseObject object, ParseException e) {
            if (e == null) {
                ParseFile file = (ParseFile)object.get("image");
                if(file != null){
                    file.getDataInBackground(new GetDataCallback() {
                        public void done(byte[] data, ParseException e) {
                            if (e == null) {
                                Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
                                if(bitmap != null){
                                    imageAccount.setImageBitmap(bitmap);
                                }else{
                                    Log.d(TAG, "file null?");
                                }
                            } else {
                                Log.d(TAG, "ParseFile ParseException: " + e.toString());
                            }
                        }
                    });
                }else{
                    Log.d(TAG, "ParseFile is null");
                }
            } else {
                Log.d(TAG, "ParseException: " + e.toString());
            }
        }
    });
ParseUser currentUser=ParseUser.getCurrentUser();
currentUser.fetchInBackground(新的GetCallback(){
公共无效完成(ParseObject对象,parsee异常){
如果(e==null){
ParseFile file=(ParseFile)object.get(“image”);
如果(文件!=null){
getDataInBackground(新的GetDataCallback(){
公共无效完成(字节[]数据,解析异常e){
如果(e==null){
位图位图=位图工厂.decodeByteArray(数据,0,数据.length);
if(位图!=null){
设置图像位图(位图);
}否则{
Log.d(标记“file null?”);
}
}否则{
d(标记为“ParseFile ParseException:+e.toString());
}
}
});
}否则{
d(标记“ParseFile为null”);
}
}否则{
d(标记“ParseException:+e.toString());
}
}
});

当您在parse中存储指向类型“file”的指针时,您会得到一个URL和一个名称

任何时候你都可以引用这个文件,你也可以得到这个URL


使用URL进行异步获取并生成本地位图,以便在视图中使用照片。

您是否尝试过ParseUser.getCurrentUser().getBytes(字符串键)?感谢您的回复和建议。我还没有尝试过,但是,它不会选择当前用户的图像,而是将填充的每个用户的图像。在parse中,列被标识为文件而不是字符串,这就是为什么我不能检索字符串的原因。谢谢您的详细建议。我注意到这段代码指的是当前用户。它实际上会检索列表中每个人的个人资料图片。例如,current检索用户的姓名、标题和年龄。我遵循了您的建议,并在支持下尝试实现类似的功能。我已经在我最初的帖子的更新部分更新了我的帖子。如果你能调查一下,那将非常有帮助。谢谢你的回复。我已经在我的初始帖子的更新部分更新了我的帖子。我只是在实现它时遇到了一些问题。如果你能帮上忙,那就太好了
                private void displayImage(ParseFile thumbnail, final ImageView img) {
Multiple markers at this line
    - Syntax error on token ",", ; 
     expected
    - Syntax error on token "(", ; 
     expected
    - Syntax error on token ")", ; 
     expected
ParseUser currentUser = ParseUser.getCurrentUser();
    currentUser.fetchInBackground(new GetCallback<ParseObject>() {
        public void done(ParseObject object, ParseException e) {
            if (e == null) {
                ParseFile file = (ParseFile)object.get("image");
                if(file != null){
                    file.getDataInBackground(new GetDataCallback() {
                        public void done(byte[] data, ParseException e) {
                            if (e == null) {
                                Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
                                if(bitmap != null){
                                    imageAccount.setImageBitmap(bitmap);
                                }else{
                                    Log.d(TAG, "file null?");
                                }
                            } else {
                                Log.d(TAG, "ParseFile ParseException: " + e.toString());
                            }
                        }
                    });
                }else{
                    Log.d(TAG, "ParseFile is null");
                }
            } else {
                Log.d(TAG, "ParseException: " + e.toString());
            }
        }
    });