【问题标题】:Spinner not showing list of items微调器不显示项目列表
【发布时间】:2017-02-01 18:35:56
【问题描述】:

我有一个由自定义适配器填充的 Spinner。

我可以注销自定义适配器中的所有TextView,看看该位置的文本是什么。

位置 0 的文本视图文本:ABC 公司

位置 1 的文本视图文本:DEF 公司

位置 2 的文本视图文本:GHI 公司

位置 3 的文本视图文本:JKL 公司

位置 4 的文本视图文本:MNO 公司

位置 5 的文本视图文本:PQR 公司

所以我知道传递数据不是问题。

选择 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>

【问题讨论】:

  • 一个问题可能是,在getItemId中使用return position;
  • 这不起作用@PavneetSingh
  • 不是日志Log.i(TAG, "didSelectCompany: 正在工作,因为现在onItemSelected 代码只是显示一个日志
  • 下拉菜单中没有任何内容。

标签: java android android-layout android-arrayadapter android-spinner


【解决方案1】:

您是否尝试删除该部分

if(convertView==null)

并尝试总是膨胀视图?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多