2012-01-11 65 views
0

我有一個用於輸入名稱的EditText框。輸入名稱並單擊添加按鈕後,我需要將名稱保存到Array中,該名稱可以用於下一個活動,並且還可以清除EditText框。我想我有這個工作,但不確定是否正確,你可以看到下面的代碼。在OnClick中添加視圖

當單擊添加按鈕時,我的實際問題有點不同我也需要它顯示添加按鈕旁邊添加了它自己的刪除按鈕的名稱,如果添加了更多,它們需要顯示在下面一種列表視圖。如果點擊刪除按鈕,則需要刪除名稱並從屏幕上刪除按鈕,並將名稱從陣列中移出。

代碼已經更新我試圖從一個適配器填充ListView但沒有sucsess到目前爲止

enter image description here

我想這樣添加TextViewButtononClick方法中。當點擊按鈕Remove時,我需要從playerList中刪除TextView字符串。我想我也將不得不刪除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和一個Button,該人員的名稱和用於刪除該組件的按鈕。單擊該按鈕時,從適配器中移除項目並通知ListView它已更改。

當您配置您的ListView時,您的適配器將需要一個將用於配置ListView的每一行的自定義適配器。

更新

示例代碼:

所有的

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

+0

所以我可以在我的XML中添加'Button'和'TextView'到ListView中?你能用java開始我還是可以加入聊天? – Matt 2012-01-11 13:55:05

+1

+1。帶有自定義適配器的ListView似乎是您的案例中的最佳選擇。 – 2012-01-11 14:24:08

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

      }}); 
    } 
} 

其次,因爲你必須在的onCreate setContentView通話這也增加了你的LinearLayout的視圖,你不需要調用setContentView(linearLayout)每次按鈕被點擊。

+0

我們可以加入聊天嗎? – Matt 2012-01-11 14:01:34

+0

我不會推薦您遵循當前的方法。這對用戶來說不是最佳的。 – JoxTraex 2012-01-11 14:02:12