使用数据

时间:2015-06-05 22:58:29

标签: android listview parse-platform android-arrayadapter

好的,所以我在使用listviews时遇到了麻烦。我有一个使用sharedPreferences保存的字符串数组,我想访问它们并与它们一起获取我需要的信息。保存的字符串是来自parse.com的objectID,通过它们,我可以访问任何用户数据。所以我想要的是从“fullname”列中检索每个用户的名字并制作一个列表,我可以稍后点击它并访问他们的个人资料。所以有人理解我的意思吗?这就是我所拥有的和我坚持的。

SharedPreferences settings = getSharedPreferences("NotificationIDs", Context.MODE_PRIVATE);
            Set<String> myStrings = settings.getStringSet("myStrings", new HashSet<String>());

            for (String s : myStrings) {


                ParseQuery<ParseObject> query = ParseQuery.getQuery("_User");
                query.getInBackground(s, new GetCallback<ParseObject>() {
                    @Override
                    public void done(ParseObject parseObject, ParseException e) {

                        String name = parseObject.getString("fullname");
                        Log.d("These are the names: ", parseObject.getString("fullname"));

                    }

                });

正如你所看到我使用im使用“for”来完成所有保存的字符串(objectIDS)。它有效,在logcat中显示我想要的名称。但我需要以某种方式列出这些名称并使其可点击。 OnClick会打开一个新的活动,其中将放置用户objectID,并且将使用它来检索所有数据。但这不是那么重要,但清单就是这样。

// EDIT

我这样做但是没有用。该清单最后空白。

公共类UserListForHistory扩展了AppCompatActivity {

private ArrayAdapter<String> mAdapter = null;



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


    mAdapter = new ArrayAdapter<String>(getApplicationContext(),
            android.R.layout.simple_list_item_1, android.R.id.text1);

    final ListView list = (ListView) findViewById(R.id.idList);
    list.setAdapter(mAdapter);

    SharedPreferences settings = getSharedPreferences("NotificationIDs", Context.MODE_PRIVATE);
    Set<String> myStrings = settings.getStringSet("myStrings", new HashSet<String>());

    for (String s : myStrings) {


        ParseQuery<ParseObject> query = ParseQuery.getQuery("_User");
        query.getInBackground(s, new GetCallback<ParseObject>() {
            @Override
            public void done(ParseObject parseObject, ParseException e) {

                mAdapter.add(parseObject.getString("fullname"));
                Log.d("These are the names: ", parseObject.getString("fullname"));
            }
        });



    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_user_list_for_history, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

}

xml文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.parseapp.eseen.eseen.UserListForHistory">



<TextView
    android:id="@android:id/text1"
    android:text="@string/hello_world"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />


<ListView

    android:id="@+id/idList"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />

1 个答案:

答案 0 :(得分:1)

我们知道如果logcat显示字符串,则存在字符串。您唯一需要的是创建一个adapter(或任何子代,如果需要)并传递从首选项中检索的字符串列表。您可以在asynctask上创建列表以检索所有名称的列表(代码中的for循环),并在流程完成时通知更改