gpt4 book ai didi

Android Spinner 适配器和 Lollipop

转载 作者:行者123 更新时间:2023-11-29 20:46:27 24 4
gpt4 key购买 nike

像许多其他人一样,我在我的 android 应用程序中使用 Parse.com。当我在 fragment 中使用 ParseQueryAdapter 来检索数据并将其传递给微调器 a

java.lang.IllegalArgumentException: Spinner adapter view type count must be 1

然后应用程序崩溃。

我已经搜索了修复程序,我知道这是 parse.com 而不是我必须解决的问题。但是,我真的想让我的应用看起来像 Material Design,如果我的应用 targetSdkVersion 19,状态栏总是黑色的。

这个问题有一个我不明白的答案,我不能直接在问题中提问,因为我没有权限。该社区的成员 suggest to extend the parseadapter and @override the getViewTypeCount with this code .我是 Android 的新手,我不知道如何正确遵循该建议。如果你们帮我解决这个问题,我将不胜感激。

更新:

我遵循 this answer 中的代码, 但错误提示 MyParseAdapter 没有类型参数

你能解释一下我做错了什么吗?

谢谢

编辑:

public void addItemsOnSpinner (){

// Instantiate a QueryFactory to define the ParseQuery to be used for fetching items in this
// Adapter.
MyParseAdapter.QueryFactory<ParseObject> factory =
new MyParseAdapter.QueryFactory<ParseObject>() {
public ParseQuery create() {
ParseQuery query = new ParseQuery("Books");
//query.whereEqualTo("activated", true);
query.orderByAscending("title");
return query;
}
};

// Pass the factory into the ParseQueryAdapter's constructor.
ParseQueryAdapter<ParseObject> adapter = new MyParseAdapter<ParseObject>(getActivity(), factory);


adapter.setTextKey("title");


/* // Perhaps set a callback to be fired upon successful loading of a new set of ParseObjects.
adapter.addOnQueryLoadListener(new OnQueryLoadListener<ParseObject>() {
public void onLoading() {
// Trigger any "loading" UI
}

public void onLoaded(List<ParseObject> objects, ParseException e) {
// Execute any post-loading logic, hide "loading" UI
}
});*/

spinnerBook.setPopupBackgroundResource(R.drawable.spinner_style);
spinnerBook.setAdapter(adapter);

spinnerBook.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

Toast.makeText(parent.getContext(),
"OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(),
Toast.LENGTH_SHORT).show();


// Log.d("test", spinnerBook.getSelectedItem().toString());
// Log.d("test2", parent.getItemAtPosition(pos).toString());
ParseObject item = (ParseObject) parent.getAdapter().getItem(pos);
objectID = item.getObjectId().toString();

//Log.d("test3",objectID);

ParseQuery<ParseObject> query = ParseQuery.getQuery("Books");
query.getInBackground(objectID, new GetCallback<ParseObject>() {
public void done(ParseObject object, ParseException e) {
if (e == null) {
// object will be your game score
bookTitle = object.getString("title");
txtBookAuthor.setText(object.getString("author"));
txtBookISBN.setText(object.getString("isbn"));
// category = object.getString("category");
} else {
// something went wrong
}
}
});
}

public void onNothingSelected(AdapterView<?> arg0) {

}
});

}

最佳答案

我是这样解决问题的

首先我创建了一个这样的新类

public class MyParseAdapter extends ParseQueryAdapter<ParseObject> {

public MyParseAdapter(Context context, QueryFactory<ParseObject> clazz) {
super(context, clazz);
}

@Override
public int getViewTypeCount() {
return 1;
}
}

我用 MyParseAdapter 替换了每个 ParseQueryAdapter甚至声明

试试这个

public void addItemsOnSpinner (){

// Instantiate a QueryFactory to define the ParseQuery to be used for fetching items in this
// Adapter.
MyParseAdapter.QueryFactory<ParseObject> factory =
new MyParseAdapter.QueryFactory<ParseObject>() {
public ParseQuery create() {
ParseQuery query = new ParseQuery("Books");
//query.whereEqualTo("activated", true);
query.orderByAscending("title");
return query;
}
};

// Pass the factory into the ParseQueryAdapter's constructor.
MyParseAdapter adapter = new MyParseAdapter(getActivity(), factory);


adapter.setTextKey("title");


/* // Perhaps set a callback to be fired upon successful loading of a new set of ParseObjects.
adapter.addOnQueryLoadListener(new OnQueryLoadListener<ParseObject>() {
public void onLoading() {
// Trigger any "loading" UI
}

public void onLoaded(List<ParseObject> objects, ParseException e) {
// Execute any post-loading logic, hide "loading" UI
}
});*/

spinnerBook.setPopupBackgroundResource(R.drawable.spinner_style);
spinnerBook.setAdapter(adapter);

spinnerBook.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

Toast.makeText(parent.getContext(),
"OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(),
Toast.LENGTH_SHORT).show();


// Log.d("test", spinnerBook.getSelectedItem().toString());
// Log.d("test2", parent.getItemAtPosition(pos).toString());
ParseObject item = (ParseObject) parent.getAdapter().getItem(pos);
objectID = item.getObjectId().toString();

//Log.d("test3",objectID);

ParseQuery<ParseObject> query = ParseQuery.getQuery("Books");
query.getInBackground(objectID, new GetCallback<ParseObject>() {
public void done(ParseObject object, ParseException e) {
if (e == null) {
// object will be your game score
bookTitle = object.getString("title");
txtBookAuthor.setText(object.getString("author"));
txtBookISBN.setText(object.getString("isbn"));
// category = object.getString("category");
} else {
// something went wrong
}
}
});
}

public void onNothingSelected(AdapterView<?> arg0) {

}
});

}

关于Android Spinner 适配器和 Lollipop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30271984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com