[英]Issues in Spinner setselection(position) with Sqlite Database android
Hello friend i want to set selection() in spinner as per SQlite databse id so my cod eis as below 您好朋友,我想根据SQlite databse id在微调器中设置selection(),所以我的编码如下
ArrayList<ParserCategory>mArrayListParserCategories = new ArrayList<ParserCategory>();
mArrayListParserCategories = mDatabaseConnectionAPI.getCategoryData(mStrinGetTrMode);
mSpinnerAdapterData = new SpinnerAdapterData(mArrayListParserCategories);
mSpinnerCate.setAdapter(mSpinnerAdapterData);
int id= mSpinnerCate.getIndexFromElement(mSpinnerAdapterData,mStringGetCantname);
DatabaseConnectionAPI.java DatabaseConnectionAPI.java
public ArrayList<ParserCategory> getCategoryData(String type) {
ArrayList<ParserCategory> mGetCategoryList = new ArrayList<ParserCategory>();
try {
String sqlQuery = "SELECT * FROM Category_Master where cat_type like "+ "'"+type+"'";
Cursor mCursorCategory = Query(sqlQuery);
if (mCursorCategory != null) {
mCursorCategory.moveToFirst();
while (!mCursorCategory.isAfterLast()) {
ParserCategory mParserCategory = new ParserCategory();
mParserCategory
.setCatId(mCursorCategory.getString(mCursorCategory
.getColumnIndex("cat_id")));
mParserCategory
.setCatName(mCursorCategory.getString(mCursorCategory
.getColumnIndex("cat_name")));
mParserCategory
.setCatType(mCursorCategory.getString(mCursorCategory
.getColumnIndex("cat_type")));
mParserCategory
.setCatMode(mCursorCategory.getString(mCursorCategory
.getColumnIndex("cat_mode")));
mGetCategoryList.add(mParserCategory);
mCursorCategory.moveToNext();
}
}
mCursorCategory.close();
} catch (Exception e) {
e.printStackTrace();
}
return mGetCategoryList;
}
SpinnerAdapterData.java SpinnerAdapterData.java
public class SpinnerAdapterData extends ArrayAdapter<ParserCategory> {
ArrayList<ParserCategory> mArrayList;
LayoutInflater mInflater;
Activity mActivity;
public SpinnerAdapterData(ArrayList<ParserCategory> list) {
super( IncomeUpdateActivity.this, R.layout.custom_spin_layout, list);
this.mArrayList = list;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflator = getLayoutInflater();
convertView = inflator.inflate(R.layout.custom_spin_layout, null);
TextView mTextView = (TextView) convertView.findViewById(R.id.txt);
mTextView.setText(mArrayList.get(position).getCatName());
return convertView;
}
}
getIndexFromElement Function getIndexFromElement函数
public int getIndexFromElement(ArrayAdapter<ParserCategory> adapter, String element) {
for(int i = 0; i < adapter.getCount(); i++) {
if(adapter.getItem(i).equals(element)) {
return i;
}
}
return 0;
}
When i run above code it retruns id always 0 any idea how can i solve it? 当我在上面的代码上运行时,它将重新运行id始终为0,我该如何解决呢?
Your adapter contains ParserCategory
objects, and you are comparing them to String
parameter, which is always false. 您的适配器包含ParserCategory
对象,并且您正在将它们与String
参数进行比较,该参数始终为false。 You probably want something like this (assuming the element should match the CatName field): 您可能想要这样(假设元素应与CatName字段匹配):
if (((ParserCategory)adapter.getItem(i)).getCatName().equals(element))
Another solution is overriding equals()
and hashCode()
in ParserCategory class. 另一个解决方案是重写ParserCategory类中的equals()
和hashCode()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.