在OnClick中添加视图

时间:2012-01-11 13:46:44

标签: android android-view

我有一个EditText框,用于输入名称。输入名称并单击添加按钮后,我需要将名称保存到Array中,该名称可以在下一个活动中使用,并清除EditText框。我想我有这个工作但不确定它是否正确你可以看到下面的代码。

单击添加按钮时,我的执行问题略有不同我还需要它显示刚添加到添加按钮旁边的名称,并带有自己的删除按钮,如果添加更多,则需要在下面显示为列表视图。如果单击删除按钮,则需要从屏幕中删除名称并删除按钮,并从阵列中删除名称。

代码已更新我正在尝试从适配器填充ListView但到目前为止没有成功

enter image description here

我在考虑在TextView方法中添加ButtononClick。当单击按钮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 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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)