0

當按鈕被點擊時,我需要創建一個自動列表視圖。用戶在點擊按鈕時輸入兩個數字e,它會從第一個數字到最後一個數字生成一個列表。當我調試應用程序時,控制檯不會顯示任何錯誤,但是當我在設備上啓動它時,我點擊按鈕,應用程序發生意外崩潰。我試圖改變onClick事件中的操作。我試圖做兩個數字的總和,它的工作。問題是。錯誤在哪裏?這是代碼。按下按鈕時創建Android陣列

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(); 
         } 
        } 
       } 
      }); 
     } 

    }); 

} 
} 

任何幫助,將不勝感激。

回答

0
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(); 

OMG!你應該重構你的代碼

+0

OMG的工作!是的,我知道,現在它可以工作,我可以開始重構代碼!謝謝您的幫助。 – andrepogg