【问题标题】:Changing value of textview using android spinners使用 android spinners 改变 textview 的值
【发布时间】:2016-07-04 14:02:32
【问题描述】:

我有一个微调器(动态),其中包含一个 ID 列表,每个 ID 都有一个产品值。当我单击特定 ID 时,需要更改与该 ID 关联的值。

我有一个包含表格的 listView。该表由产品名称、产品价格和产品信息组成。当我更改 ID 时,表信息(列表视图)会更改,但产品值不会更改(这是文本视图,不是列表视图的一部分)。

我正在使用来自不同类的意图传递产品值。如何使当我更改微调器中的项目时,产品值会更改?

 /**
     * Listener for flight leg selection of spinner
     */
    private OnItemSelectedListener onFlightLegSelectedListener = new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            new ShowSalesReportAsyncTask(flightLegMap.get(flightLegs.get(position)), position).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // Do nothing
        }
    };

这是我获得产品价值的 onCreate。

   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sales_report);
        salesReportListView = (ListView) findViewById(R.id.sales_report_listview);
        spinnerFlightLegs = (Spinner) findViewById(R.id.flight_legs);
        noTransactionsWarning = (TextView) findViewById(R.id.no_transactions_warning);
        totalValueNetAmount = (TextView) findViewById(R.id.total_currency_net_value);
        String salesRevenue = TOTAL_VALUE;
        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            salesRevenue = extras.getString(TOTAL_VALUE);
        }
        totalValueNetAmount.setText(salesRevenue);



        flightLegMap = getAllFlightLegs();
        if (!flightLegMap.isEmpty()) {
            setFlightLegSpinner();
            btnShare.setEnabled(true);
        } else {
            btnShare.setEnabled(false);
        }

        spinnerFlightLegs.setOnItemSelectedListener(onFlightLegSelectedListener);
        salesReportListAdapter = new SalesReportListAdapter(this);
        salesReportListView.setAdapter(salesReportListAdapter);

这是我用来用数据填充视图的异步任务。

私有类 ShowSalesReportAsyncTask 扩展 AsyncTask> {

private String flightLeg;
private int position;

public ShowSalesReportAsyncTask(String flightLeg, int position) {
    this.flightLeg = flightLeg;
    this.position = position;
}

@Override
protected List<Purchase> doInBackground(Void... params) {
    List<Purchase> rows = new ArrayList<Purchase>();
    PurchaseDao purchaseDao = new PurchaseDao(flightLeg, MIUtils.getShardDatabaseIndexMap());
    LOG.debug(TAG + "Getting report for : {}", flightLeg);
   // double netTotal = SalesUtil.calculateFlightTransactionTotal(purchaseDao, refundDao,());
    return purchaseDao.getSuccessfulTransactions();
}

@Override
protected void onPostExecute(List<Purchase> result) {
    super.onPostExecute(result);
    if (!result.isEmpty()) {
        noTransactionsWarning.setVisibility(View.GONE);
    } else {
        noTransactionsWarning.setVisibility(View.VISIBLE);
    }
    salesReportListAdapter.setRowsAndFlightDetails(result, flightLegMap.get(flightLegs.get(position)),
            spinnerFlightLegs.getSelectedItem().toString());

     totalValueNetAmount.setText((int) netTotal);

}

}

需要更改的项目是“EUR”。 SPINNER TABLE IMAGE

【问题讨论】:

  • 什么是产品价值? 98.00 欧元?
  • 您打印/记录了值吗?它打印什么?空还是空白?
  • 产品价值为 98.00 欧元。当我更改微调器时,它应该显示一个新的产品值,但它显示的是 98.00

标签: android listview textview spinner


【解决方案1】:

在活动的 onStart() 方法中添加注册监听器的代码。这应该可以。

这应该更好地回答你的问题 - How to keep onItemSelected from firing off on a newly instantiated Spinner?

【讨论】:

    猜你喜欢
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    相关资源
    最近更新 更多