2017-10-26 4 views
0

Wie listet man Listenelemente in Android auf, wenn ein Benutzer eine Nummer in Edittext eingibt und auf eine Schaltfläche klickt, um die angegebene Anzahl von Listenelementen bei der nächsten Aktivität anzuzeigen?Wie zeige ich Listview-Elemente an, wenn ein Benutzer eine Nummer in ein Textfeld eingibt?

Ich habe einen EditText und eine Schaltfläche auf MainActivity1 und eine ListView und TextView auf MainActivity2. TextView dient nur dazu, mir mitzuteilen, dass der Wert auf dem nächsten Bildschirm liegt.

MainActivity.java

package com.populatelist; 
import android.support.v7.app.ActionBarActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

public class MainActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final EditText edt = (EditText)findViewById(R.id.editText1); 
     Button btn = (Button)findViewById(R.id.button1); 

     btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent myin = new Intent(MainActivity.this,MainActivity2.class); 
       myin.putExtra("textbox", edt.getText().toString()); 
       startActivity(myin); 
      } 
     }); 

    } 
} 

MainActivity2.java

package com.populatelist; 

import android.support.v7.app.ActionBarActivity; 

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

import android.content.Intent; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 
import android.widget.TextView; 

public class MainActivity2 extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main_activity2); 

     TextView tv = (TextView)findViewById(R.id.textView1); 


     Intent myin2 = getIntent(); 
     String str = myin2.getStringExtra("textbox"); 

     tv.setText(str); 
     final ListView lv = (ListView) findViewById(R.id.listView1); 

     String[] arrStr = new String[] { 
       "Hello World", 
       "Hello India", 
       "Hello Rajasthan", 
       "Hello Jodhpur", 
       "Hello Mujeeb" 
     }; 

     final List<String> hello_list = new ArrayList<String>(Arrays.asList(arrStr)); 

     final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, hello_list); 

     int n = Integer.parseInt(str); 

      lv.setAdapter(arrayAdapter); 

    } 
} 
+0

Und was ist das Problem mit Ihrem Code? –

+0

dieser Code ist in Ordnung, ich steckte nur hier..wie die Logik zu implementieren, um die Elemente der Listenansicht auf eine vom Benutzer angegebene Anzahl anzuzeigen! –

+0

also willst du einen Listeneintrag entsprechend deiner Eingabe richtig ?? – Mohammad

Antwort

0

Jedes Mal, wenn Sie Wert in der zweiten Aktivität erstellen Sie ein neues Array "b" erhalten mit nicht erforderlich von Werte.

String str = myin2.getStringExtra("textbox"); 
int noOfNames = Integer.parseInt(str); 
String[] b = new String[StringnoOfNames]; 

Kopieren Sie dann die Elemente aus dem ursprünglichen Array

b = Arrays.copyOf(arrStr, noOfNames); 
final List<String> hello_list = new ArrayList<String>(Arrays.asList(b)); 
0

Sie können einfach den nächsten Wert zuletzt Ihren String-Array hinzufügen, wie

String[] arrStr = new String[] { 
       "Hello World", 
       "Hello India", 
       "Hello Rajasthan", 
       "Hello Jodhpur", 
       "Hello Mujeeb", 
       str 
     }; 

Es Ihren Eingabewert zeigen wird letzte Position Ihrer Listenansicht.

Und wenn Sie neue Elemente hinzufügen und auch alt anzeigen möchten, müssen Sie das ganze String-Array an die vorherige Aktivität übergeben und der letzten Position einen neuen Wert hinzufügen, übergeben Sie es beim Start der nächsten Aktivität. Mit diesem können Sie alle Daten in der Listenansicht sehen.

0

Zuerst überprüfen, ob Ihre EditText nicht null ist, hier Ihre App

if (edt.getText().length() > 0) { 

     Intent myin = new Intent(MainActivity.this,MainActivity2.class); 
     myin.putExtra("textbox", Integer.parseInt(edt.getText().toString())); 
     startActivity(myin); 
    } 

behandeln Sie dann Ihre Absicht

ListView lv = (ListView) findViewById(R.id.listview1); 
    ArrayAdapter<String> arrayAdapter = null; 
    int number = intent.getIntExtra("textbox", 0); 
    switch (number) { 

     case 0: 

      arrayAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1, arrStr); 
      lv.setAdapter(arrayAdapter); 
      arrayAdapter.notifyDataSetChanged(); 
      break; 

     case 1: 

      arrayAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1, AnotherSourceArray); 
      lv.setAdapter(arrayAdapter); 
      arrayAdapter.notifyDataSetChanged(); 
      break; 

     case 2: 

      arrayAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1, AnotherSourceArray); 
      lv.setAdapter(arrayAdapter); 
      arrayAdapter.notifyDataSetChanged(); 
      break; 

      ... 

     default: 

      break; 
    } 

Hinweis zum Absturz bringen kann - das ist nur Probe. Sie können dies auf viele andere Arten lösen. Jeder Switch-Fall kann weitere anzuzeigende Daten enthalten. Die Verwendung von Standardlayouts für Listenansichten kann frustrierend sein, besser ist es, benutzerdefinierte Klassen zu erstellen, die extends ArrayAdapter<String>

Verwandte Themen