【问题标题】:Android Array creation when a button is pressed按下按钮时创建Android数组
【发布时间】:2015-11-08 11:04:33
【问题描述】:

单击按钮时,我需要创建一个自动列表视图。用户在单击按钮时输入两个数字 e,它会生成一个从第一个数字到最后一个数字的列表。当我调试应用程序时,控制台没有显示任何错误,但是当我在设备上启动它并单击按钮时,应用程序意外崩溃。我试图更改 onClick 事件中的操作。我尝试对这两个数字求和,它起作用了。问题是。错误在哪里?就是代码。

package com.example.andre.thelist;

import android.app.AlertDialog;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class part2 extends MainActivity {


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



    /*FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });*/

    Button btn = (Button) findViewById(R.id.gen);
    btn.setOnClickListener(new View.OnClickListener() {




        @Override
        public void onClick(View v) {


            //Toast.makeText(getApplicationContext(), firsto.getClass().getName() + " " + result , Toast.LENGTH_SHORT).show();
            EditText firste = (EditText) findViewById(R.id.firstn);
            EditText laste = (EditText) findViewById(R.id.lastn);
            String firsti = firste.getText().toString();
            String lasti = laste.getText().toString();
            int firsto = Integer.parseInt(firsti);
            int lastoo = Integer.parseInt(lasti);
            ListView listMod = (ListView) findViewById(R.id.listMod);
            List<Integer> lista = new ArrayList<>();

            ArrayAdapter<Integer> arrayAdapter = new ArrayAdapter<>(
                    part2.this,
                    android.R.layout.simple_list_item_2,
                    lista);

            for (int i = firsto; i <= lastoo; i++) {
                lista.add(i);
            }

            listMod.setAdapter(arrayAdapter);
            listMod.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adattatore, final View componente, int pos, long id) {
                    final Integer numero = (Integer) adattatore.getItemAtPosition(pos);

                    //creo il ciclo di controllo valori
                    if (numero > 0) {
                        boolean isPrime = true;
                        for (int i = 2; i <= numero / 2; i++) {
                            if (numero % i == 0) {
                                isPrime = false;
                                break;
                            }
                        }
                        if (isPrime) {
                            AlertDialog alertDialog = new AlertDialog.Builder(part2.this).create();
                            alertDialog.setTitle("Yeah numero primo");
                            alertDialog.setMessage("Il numero " + numero + " è un numero primo!");
                            alertDialog.show();
                        } else {
                            Toast.makeText(getApplicationContext(), "Il numero " + numero + " non è un numero primo", Toast.LENGTH_SHORT).show();
                        }
                    }
                }
            });
        }

    });

}
}

任何帮助将不胜感激。

【问题讨论】:

    标签: java android android-listview android-arrayadapter onclicklistener


    【解决方案1】:
    List<Integer> lista = new ArrayList<Integer>();
    
    ArrayAdapter<Integer> arrayAdapter = new ArrayAdapter<Integer>(part2.this,
                        android.R.layout.simple_list_item_1,
                        lista);
    

    并且:adattatore.getItemAtPosition(pos);应该是lista.get(pos)

    alertDialog.create().show();
    

    天哪!你应该重构你的代码

    【讨论】:

    • 天哪,工作!是的,我知道,现在它可以工作了,我可以开始重构代码了!感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2020-10-04
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多