0

У меня есть Spinner, который заполняется пользовательским адаптером.Счетчик, не показывающий список товаров

Я могу вывести все TextView в пользовательский адаптер и посмотреть, что текст находится в позиции.

TEXT VIEW в позиции 0 TEXT: Компания ABC

TEXT VIEW НА ДОЛЖНОСТЬ 1 ТЕКСТ: DEF Компания

TEXT VIEW в положении 2 ТЕКСТ: ГХИ Компания

TEXT VIEW в положении 3 Текст: JKL Компания

TEXT VIEW в положении 4 ТЕКСТ: МНО компании

T ВНЕШНИЙ ВИД В ПОЛОЖЕНИИ 5 ТЕКСТ: PQR Company

Поэтому я знаю, что передача данных не является проблемой.

Когда выбрано Spinner, в приложении оно просто отображается пустым.

Кто-нибудь видит, что я делаю неправильно?

public class MyActivity extends AppCompatActivity { 

    private Spinner spinnerCompanies; 
    private ArrayList<HashMap> arrayOfCompanies; 

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

     spinnerCompanies = (Spinner) findViewById(R.id.spCompany); 

     //do background task and pass JSONArray to processCompanies 
     processCompanies(jsonArray); 

    } 

    public void processCompanies(JSONArray jsonArray){ 

      arrayOfCompanies = new ArrayList<HashMap>(); 

      HashMap company; 
      JSONObject record; 

      for (int i = 0; i < jsonArray.length(); i++) { 

       record = jsonArray.getJSONObject(i); 
       company = new HashMap<String, String>(); 

       company.put("NAME", record.getString("CompanyName")); 

       arrayOfCompanies.add(company); 

      } 

      CompanyAdapter companyAdapter = new CompanyAdapter(arrayOfCompanies); 
      spinnerCompanies.setAdapter(companyAdapter); 

      spinnerCompanies.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       @Override 
       public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
        didSelectCompany(position); 
       } 

       @Override 
       public void onNothingSelected(AdapterView<?> parent) { 

       } 
      }); 
    } 

    private void didSelectCompany(int position){ 
     Log.i(TAG, "didSelectCompany: " + position); 
    } 

    public class CompanyAdapter extends BaseAdapter { 

     private final ArrayList<HashMap> mArrayList; 

     public CompanyAdapter(ArrayList<HashMap> map) { 
      mArrayList = map; 
     } 

     @Override 
     public int getCount() { 
      return mArrayList.size(); 
     } 

     @Override 
     public HashMap<String, String> getItem(int position) { 
      return mArrayList.get(position); 
     } 

     @Override 
     public long getItemId(int position) { 
      return 0; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 

      if (convertView == null) { 
       convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_company, parent, false); 
      } 

      HashMap<String, String> item = getItem(position); 

      TextView textView = (TextView) convertView.findViewById(R.id.tvSubTermainalName); 
      textView.setText(item.get("NAME")); 

      Log.d(TAG, "TEXT VIEW AT POSITION " + position + " TEXT: " + textView.getText()); 


      return convertView; 
     } 
    } 

} 

R.layout.item_company XML используется пользовательский адаптер

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 

    <TextView 
     android:text="TextView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/tvSubTermainalName"/> 
</LinearLayout> 
+0

один вопрос может быть, использовать 'возврата позиции,' 'в getItemId' –

+0

Это не сработало @PavneetSingh –

+0

не журнал' Log.i (TAG, «didSelectCompany:' работает, потому что сейчас 'onItemSelected' код просто показывает журнал –

ответ

0

ли вы попробуйте удалить часть

if(convertView==null) 

и попробовать надувать вид всегда?

Смежные вопросы