[英]Add Views to LinearLayout of Fragment everytime I click button
我有一個按鈕,在onClickListener
我有:
Button button1 = new Button(mContext);
LinearLayout.LayoutParams x = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
button1.setLayoutParams(x);
ll.addView(button1);
當我第一次單擊按鈕,第二次單擊(以及更多)按鈕而不添加新按鈕時,它會起作用。 有人可以幫我嗎?
這是我的課:
public class ListaDruzynAdapter extends ArrayAdapter {
private ArrayList<Druzyna>listaDruzyn;
private Context mContext;
private SelectedTeamsFragment selectedTeamsFragment=null;
private LinearLayout ll;
int i = 0;
public ListaDruzynAdapter(Context c,ArrayList lista){
super(c, 0, lista);
this.mContext = c;
listaDruzyn=lista;
ll=(LinearLayout)((Activity)mContext).findViewById(R.id.selectedTeamFrag);
}
@Override
public int getCount() {
return listaDruzyn.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
// if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(150, 150));
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
if (position==0){
imageView.setImageResource(R.drawable.ic_add_24dp);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DodajNowaDruzyneFragment dodajNowaDruzyneFragment = new DodajNowaDruzyneFragment();
dodajNowaDruzyneFragment.setListeDruzyn(ListaDruzynAdapter.this);
FragmentManager fragmentManager = ((Activity)mContext).getFragmentManager();
dodajNowaDruzyneFragment.show(fragmentManager,"ADD_NEW_TEAM_FRAGMENT");
}
});
}else{
imageView.setImageResource(R.drawable.ic_done_24dp);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (selectedTeamsFragment==null){
selectedTeamsFragment = new SelectedTeamsFragment();
FragmentTransaction ft=((Activity)mContext).getFragmentManager().beginTransaction();
ft.add(R.id.selectedTeamFrag,selectedTeamsFragment);
ft.commit();
}
Button button1 = new Button(mContext);
LinearLayout.LayoutParams x = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
button1.setLayoutParams(x);
ll.addView(button1);
}
});
}
return imageView;
}
}
類是適配器,其中網格中的第一項是“添加”按鈕。 添加的按鈕將添加新的按鈕,但會添加另一個片段。
您需要為Linearlayout設置方向,否則它將僅容納一個孩子
以編程方式
ll.setOrientation(LinearLayout.VERTICAL);
要么
ll.setOrientation(LinearLayout.HORIZONTAL);
並通過XML
<LinearLayout
android:id="@+id/selectedTeamFrag"
android:orientation="vertical"
....
.... >
...
...
</LinearLayout>
要么
<LinearLayout
android:id="@+id/selectedTeamFrag"
android:orientation="horizontal"
....
.... >
...
...
</LinearLayout>
在下面找到用於水平方向的示例活動代碼
activity_main.xml中
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/horizontalScrollView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" >
<LinearLayout
android:id="@+id/selectedTeamFrag"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</LinearLayout>
</HorizontalScrollView>
</RelativeLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout ll = (LinearLayout) findViewById(R.id.selectedTeamFrag);
for (int count=0; count < 10 ; count++) {
Button button1 = new Button(MainActivity.this);
button1.setText("B:"+count);
LinearLayout.LayoutParams x = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
button1.setLayoutParams(x);
ll.addView(button1);
}
}
}
輸出:-
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.