简体   繁体   English

Sqlite数据库android中Spinner setselection(position)中的问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM