Frage

Ich habe ein EditText Box, das zum Eingeben von Namen verwendet wird. Sobald die Namen eingegeben wurden und die Schaltfläche hinzufügen wird, muss der Name in a gespeichert werden Array das kann in der nächsten Aktivität verwendet werden und auch die Löschung EditText Kasten. Ich denke, ich habe diese Arbeit, aber nicht sicher, ob es richtig ist, dass Sie den folgenden Code sehen können.

Meine aktivierte Frage ist etwas anders, wenn auf die Schaltfläche hinzufügen wird. Ich brauche ihn auch, um den Namen anzuzeigen, der gerade neben der Schaltfläche Hinzufügen mit eigener Schaltfläche hinzugefügt wurde. Wenn mehr hinzugefügt werden, müssen sie unten wie eine Art von Liste angezeigt werden Aussicht. Wenn auf die Schaltfläche Entfernen geklickt wird, müssen Sie den Namen entfernen und vom Bildschirm und den Namen aus dem Array entfernen.

Der Code wurde aktualisiert. Ich versuche, die ListView aus einem Adapter zu fopulieren, aber bisher keine Erfolgsmannschaft

enter image description here

Ich denke so etwas wie ein Hinzufügen eines TextView und Button innerhalb der onClick Methode. Und wenn der Knopf Remove wird geklickt, ich müsste das entfernen TextView String aus der Playerlist. Ich denke, ich müsste auch das entfernen View So kann es nicht mehr gesehen werden.

Kann mir irgendjemand auf der Codeseite helfen, es kann es nicht herausfinden.

public class AddRemove extends Activity {

ArrayList<String> playerList = new ArrayList<String>();
String playerlist[];
ListView listview;



@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.addremove);
ListView listView = (ListView)findViewById(R.id.namelistview);
listview.setAdapter(new myAdapter(getApplicationContext(), R.layout.listview_content, list));

Button confirm = (Button) findViewById(R.id.add);
confirm.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
EditText playername = (EditText) findViewById(R.id.userinput);
String name = playername.getText().toString();
playerList.add(name);
playername.setText("");

}});

Button play = (Button) findViewById(R.id.playnow);
play.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent i = new Intent( demo.AddRemove.this, demo.PasswActivity.class);
Bundle extras = new Bundle();
extras.putSerializable( "com.example.playerList", playerList );
i.putExtras( extras );
startActivity( i );

}});
}

class myAdapter extends ArrayAdapter{

List<String> users;
public myAdapter(Context context, int textViewResourceId, List<String> list) {
super(context, textViewResourceId);
// assign list
users = list;
// TODO Auto-generated constructor stub
}

public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
return super.getView(position, convertView, parent);

}

}
}

ListView_Content XML

<TextView
    android:id="@+id/playername"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView" />

<Button
    android:id="@+id/remove"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Remove" />
War es hilfreich?

Lösung

Sie sollten eine ListView verwenden, um Ihre Liste der Personen anzuzeigen. In dieser Liste haben Sie ein Layout mit 2 Komponenten in jeder Zeile. Diese würden eine Textansicht und eine Schaltfläche, den Namen der Person und die Schaltfläche zum Entfernen der Komponente enthalten. Wenn auf die Schaltfläche klickt, entfernen Sie das Element aus dem Adapter und benachrichtigen Sie die geänderte ListView.

Wenn Sie Ihre Listansicht konfigurieren, muss Ihr Adapter über einen benutzerdefinierten Adapter verfügen, mit dem jede Zeile Ihrer Listansicht konfiguriert werden kann.

Aktualisieren

Beispielcode:

http://android.vexedlogic.com/2011/04/02/android-list-listactivity-and-listview-ii-%E2%80%93-custom-adapter-list-item-view/

Andere Tipps

Zunächst müssen Sie jede Textansicht unter Bezugnahme auf den Kontext initialisieren. Also in deinem onClick, da es in ist in ViewOnClick.java:

public class ViewOnClick extends Activity {
    LinearLayout.LayoutParams layoutParams;
    LinearLayout ll;
    static int i;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button b = (Button)findViewById(R.id.Button01);
        ll = (LinearLayout)findViewById(R.id.ll);
        layoutParams = new LinearLayout.LayoutParams
        (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        b.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                TextView view = new TextView(ViewOnClick.this);             
                view.setText(++i+" view");
                ll.addView(view, layoutParams); 

            }});
    }
}

Zweitens, da Sie einen Anruf haben setContentView In OnCreate, was auch Ihre Linearlayout zur Ansicht hinzufügt, müssen Sie nicht anrufen setContentView(linearLayout) Jedes Mal, wenn die Schaltfläche angeklickt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top