无法理解如何动态地每次加载不同项目的Spinner

时间:2018-02-14 07:56:09

标签: java android

我正在尝试根据通过导航抽屉选择的类别加载包含不同项目的微调器/下拉列表,此外它必须动态地基于相关字符串的数量和值到每个类别。 我已经拥有了这些字符串,并且人们在网上的行为不断变化。 我有这些字符串,我知道如何每次访问这些字符串,但是在网上搜索了几个小时之后我无法意识到的只是: 如何使用不同的字符串和不同数量的字符串加载相同的微调器,没有任何常量值?

对不起,如果这个问题“愚蠢”,我希望你能帮忙,谢谢你!

这是我尝试过的,从网上的一个例子,但是我在“this”上得到了一个错误,我写了“这里已经有错误了”。 这不是我想要的,但它是一个开始,但这不起作用......

Upadte:我会解释一切,以便你能更好地理解,因为我意识到我不清楚...... 好吧,我有一个php网站(基于wordpress,如果这对你很重要),人们可以上传帖子并选择标签,我将这些标签保存在xml文件中,并通过每次创建应用时刷新的服务保存整个帖子数据。 问题是,人们正在创建新标签,所以我有新的字符串和项目可供选择处理。 我知道并且可以轻松访问这些标签,但我想制作这些标签的下拉列表。 菜单中的每个类别都处理不同的Json并包含不同的标签,我想制作一个asynctask,检查哪个帖子包含所选标签,我知道该怎么做。 但是我不知道如何用不同的标签填充列表,所以当我按下下拉列表中的一个选项时,它会发送asynctast它的值。 我怎么能这样做?

public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener,  View.OnClickListener {


Spinner spinner;
EditText searchFor;
Button SearchButton;
String[] itemsToChoose;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    spinner = (Spinner) findViewById(R.id.spinner);

    spinner = (Spinner)findViewById(R.id.spinner);
    ArrayAdapter<String>adapter = new ArrayAdapter<String>(MainActivity.this,
            android.R.layout.simple_spinner_item,itemsToChoose);

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(this); //Already got an error here

    searchFor = (EditText) findViewById(R.id.input_search);
    SearchButton = (Button) findViewById(R.id.search_button);
    SearchButton.setOnClickListener(this);



    Intent intent = new Intent(this,MyIntentService.class);
    startService(intent);

    Intent intentLogin = new Intent(MainActivity.this, LoginActivityU.class);
    startActivityForResult(intentLogin, 0);
    firstLogin = false;
    sp=getSharedPreferences("JsonData", 0);
    check = sp.getString("trompim", null);



    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
}



public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {



    }
}

1 个答案:

答案 0 :(得分:0)

好的,这是

List<String> timeSlots = new ArrayList<String>();
ArrayAdapter<String> adp;
Spinner spinnerTime;

我的数据列表

  if (hour >=9 && hour <11){
        timeSlots.add("XYZ");
    }

    else if (hour >= 11 && hour < 13){
        Log.d(TAG ,"Condition 1");
           timeSlots.add("YZa");
           timeSlots.add("XZa");
    }
    else if ( hour >= 13 && hour <15){
        Log.d(TAG ,"Condition 2");
        timeSlots.add("YZa");
        timeSlots.add("XZa");
        timeSlots.add("YZaZ");
    }


adp = new ArrayAdapter<String>
            (this,android.R.layout.simple_dropdown_item_1line, timeSlots);
spinnerTime.setAdapter(adp);

所以你只需要将数据设置为adapter

希望这有帮助。