【问题标题】:android Spinner set Text give error in setTextandroid Spinner set Text在setText中给出错误
【发布时间】:2015-06-30 16:38:34
【问题描述】:

我正在处理 EditTextSpinner 。当我为EditText 设置文本时它很好,但是当我尝试为Spinner 设置文本时它会出错。

这是设置文本EditText的代码

New_Name.setText(NewName);

这里 New_Name 是EditText

这是设置文本Spinner的代码

New_Quantity.setText(NewQuantity);

这里 New_Quantity 是Spinner

这是完整的代码。

    public class UpdateFoodActivity extends Activity {
    EditText Name_Search,New_Name,New_Calorie,New_Fat,New_Protein,New_Sugar,New_carbohydrates;
    Spinner New_Quantity;
    TextView title_text;
    String SearchName,NewName,NewQuantity,NewCalorie,NewFat,NewProtein,NewSugar,Newcarbohydrates;
    FoodDbHelper foodDbHelper;
    SQLiteDatabase sqLiteDatabase;
    Button UpdateButton;
    ArrayAdapter<CharSequence> adapter;
    private Button button1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.update_food_activity);

        Name_Search = (EditText)findViewById(R.id.name_search);
        New_Name = (EditText)findViewById(R.id.new_name);
        New_Quantity = (Spinner)findViewById(R.id.new_quantity);
        adapter = ArrayAdapter.createFromResource(this, R.array.quant, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        New_Quantity.setAdapter(adapter);
        New_Quantity.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            }

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

            }
        });
        New_Calorie = (EditText)findViewById(R.id.new_calorie);
        New_Fat = (EditText)findViewById(R.id.new_fat);
        New_Protein = (EditText)findViewById(R.id.new_protein);
        New_Sugar = (EditText)findViewById(R.id.new_sugar);
        New_carbohydrates = (EditText)findViewById(R.id.new_vitamins);
        UpdateButton = (Button)findViewById(R.id.update_button);
        title_text = (TextView)findViewById(R.id.title_text);
        New_Name.setVisibility(View.GONE);
        New_Quantity.setVisibility(View.GONE);
        New_Calorie.setVisibility(View.GONE);
        New_Fat.setVisibility(View.GONE);
        New_Protein.setVisibility(View.GONE);
        New_Sugar.setVisibility(View.GONE);
        New_carbohydrates.setVisibility(View.GONE);
        UpdateButton.setVisibility(View.GONE);
        title_text.setVisibility(View.GONE);

    }


    public void searchFood(View view){
        SearchName = Name_Search.getText().toString();
        foodDbHelper = new FoodDbHelper(getApplicationContext());
        sqLiteDatabase = foodDbHelper.getReadableDatabase();
        Cursor cursor = foodDbHelper.getFood(SearchName,sqLiteDatabase);
        if (cursor.moveToFirst()) {


            NewQuantity = cursor.getString(0);
            NewCalorie = cursor.getString(1);
            NewFat = cursor.getString(2);
            NewProtein = cursor.getString(3);
            NewSugar = cursor.getString(4);
            Newcarbohydrates = cursor.getString(5);

            NewName = SearchName;
            New_Name.setText(NewName);
            New_Quantity.setText(NewQuantity);
            New_Calorie.setText(NewCalorie);
            New_Fat.setText(NewFat);
            New_Protein.setText(NewProtein);
            New_Sugar.setText(NewSugar);
            New_carbohydrates.setText(Newcarbohydrates);
            New_Name.setVisibility(View.VISIBLE);
            New_Quantity.setVisibility(View.VISIBLE);
            New_Calorie.setVisibility(View.VISIBLE);
            New_Fat.setVisibility(View.VISIBLE);
            New_Protein.setVisibility(View.VISIBLE);
            New_Sugar.setVisibility(View.VISIBLE);
            New_carbohydrates.setVisibility(View.VISIBLE);
            UpdateButton.setVisibility(View.VISIBLE);
            title_text.setVisibility(View.VISIBLE);

        }
        else
        {
            Toast.makeText(getApplicationContext(),
                    "No Dish Found " ,
                    Toast.LENGTH_SHORT).show();


        }

    }

    public void updatebutton(View view)
    {
        foodDbHelper = new FoodDbHelper(getApplicationContext());
        sqLiteDatabase = foodDbHelper.getWritableDatabase();
        String name,quantity,calorie,fat,protein,sugar,carbohydrates;
        name = New_Name.getText().toString();
        quantity = New_Quantity.getSelectedItem().toString();
        calorie = New_Calorie.getText().toString();
        fat = New_Fat.getText().toString();
        protein = New_Protein.getText().toString();
        sugar = New_Sugar.getText().toString();
        carbohydrates = New_carbohydrates.getText().toString();
        int count = foodDbHelper.updateInformation(SearchName,name,quantity,calorie,fat,protein,sugar,carbohydrates,sqLiteDatabase);
        Toast.makeText(getApplicationContext(),count+" dish updated",Toast.LENGTH_LONG).show();
        Intent intent = new Intent(this,UpdateFoodActivity.class);
        startActivity(intent);

    }

}

【问题讨论】:

  • 你得到什么样的错误?你能发布堆栈跟踪吗
  • Spinner 元素没有setText() 方法。您应该使用ArrayAdapter例如)。
  • Spinner 没有 setText() 方法。也许你会把整个代码?
  • setText 无法在微调器中解析
  • 我有更新问题请检查@tomloprod

标签: android android-edittext spinner


【解决方案1】:

为了向微调器添加条目,您需要定义一个适配器,我举个例子:

spinner = (Spinner) findViewById(R.id.spinner2);
List<String> list = new ArrayList<String>();
list.add("list 1");
list.add("list 2");
list.add("list 3");
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
    android.R.spinner_item, list);
spinner.setAdapter(dataAdapter);

【讨论】:

  • 好像没问题!?如果您的问题得到解答,则标记为已解决
  • 不解决我的问题,我已经在使用 arrayadapter,但我在微调器的设置文本中有问题
【解决方案2】:

Spinner 喜欢ListView,需要一个适配器来渲染数据。适配器,简单来说,就是项目的集合。 (如您所见,ListView 始终包含项目列表和 Spinner)。尽管如此,spinner 的适配器通常是一个字符串列表。 (因为spinner只代表用户选择)

在您的示例中,您可以简单地创建ArrayAdapter 并再次分配给Spinner

private void setTextForSpinner(Spinner spinner) {
   String[] items = {"Stack", "Over", "Flow"};
   ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, items); 
   spinner.setAdapter(adapter);
}

如果将上述代码应用于您的示例,您可以再次更改为:

private void setTextForSpinner(Spinner spinner, String NewName) {
       String[] items = {NewName};
       ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, items); 
       spinner.setAdapter(adapter);
}

希望有帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多