2012-01-11 4 views
0

У меня есть поле EditText, которое используется для ввода имен. Как только имена будут введены и нажата кнопка добавления, мне нужно, чтобы имя было сохранено в Array, которое может быть использовано в следующем действии, а также очистить поле EditText. Я думаю, что у меня это работает, но не уверен, правильно ли вы видите код ниже.Добавить виды в пределах OnClick

Мой экстренный вопрос немного отличается при нажатии кнопки добавления. Мне также нужно, чтобы оно отображало имя, которое было добавлено рядом с кнопкой добавления, с помощью собственной кнопки удаления, и если добавлено больше, они должны появиться ниже, вид списка. Если щелкнуть кнопку удаления, необходимо удалить имя и удалить кнопку с экрана и имя из массива.

Кодекс был обновлен Я пытаюсь заполнить ListView с адаптером, но без sucsess до сих пор

enter image description here

Я имею в виду что-то вроде добавления TextView и Button в методе onClick. И когда нажата кнопка Remove, мне нужно будет удалить строку TextView из playerList. Думаю, мне также придется удалить View, чтобы его больше не видно.

Может ли кто-нибудь помочь мне на кодовой стороне этого, похоже, не понять это.

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" /> 

ответ

2

Вы должны использовать ListView для отображения списка людей. Внутри этого списка у вас будет макет с 2 компонентами в каждой строке. Они включают в себя один TextView и одну кнопку, имя человека и кнопку для удаления компонента. Когда кнопка нажата, удалите элемент из адаптера и уведомите ListView, что он изменился.

Когда вы настраиваете свой ListView, ваш адаптер должен иметь специальный адаптер, который будет использоваться для настройки каждой строки вашего ListView.

Update

Пример кода:

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

+0

Итак, я могу добавить 'Button' и' TextView' в 'ListView' в моем XML? Можете ли вы запустить меня с помощью java или мы можем присоединиться к чату? – Matt

+1

+1. ListView с пользовательским адаптером кажется лучшим вариантом в вашем случае. –

0

Прежде всего, вам необходимо инициализировать каждый TextView со ссылкой на контекст. Таким образом, в вашем onClick, учитывая, что он находится в 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); 

      }}); 
    } 
} 

Во-вторых, учитывая, что у вас есть вызов setContentView в OnCreate, который также добавляет ваш LinearLayout к просмотру, вам не нужно вызывать setContentView(linearLayout) каждый раз, нажата кнопка.

+0

Можем ли мы присоединиться к чату? – Matt

+0

Я бы не рекомендовал следовать вашему текущему подходу. он не является оптимальным для пользователя. – JoxTraex

Смежные вопросы