当前位置: 首页 > 知识库问答 >
问题:

有关如何基于给定给“编辑文本”视图的计数值动态实现线性布局的代码

鲜于凯歌
2023-03-14

我正在研究个人详细信息模型,有2个单选选项已婚和未婚。点击已婚单选按钮,它将启用编辑文本,它将采取该已婚人士的子女号码。基于为编辑文本输入的值。正在实施动态线性布局。但是问题是当点击编辑文本时,它正在创建线性布局(在删除编辑文本时,线性布局也应该删除)。

我的代码是这样的。主要活动

et_childCount.addTextChangedListener(new TextWatcher() {
   @Override
       public void beforeTextChanged(CharSequence s, int start, int count, int after) {
   @Override
       public void onTextChanged(CharSequence s, int start, int before, int count) {
        }
    @Override
       public void afterTextChanged(Editable s) {
           if (s != null) {
               countI = childCount;
               noOfChild = countI;
                if (noOfChild >= 1) {
                   for (int i = 1; i <= noOfChild; i++) {
                       LinearLayout linearLayout = new LinearLayout(getActivity());
                       LayoutParams params = new LinearLayout.LayoutParams(
                               LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
                       linearLayout.setLayoutParams(params);
                       linearLayout.setOrientation(LinearLayout.VERTICAL);
                       TextView tv_BorderChildDetails = new TextView(getActivity());
                       tv_BorderChildDetails.setText("Child " + i);
                       tv_BorderChildDetails.setGravity(Gravity.CENTER_HORIZONTAL);
                       tv_BorderChildDetails.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
                       linearLayout.addView(tv_BorderChildDetails);
                       EditText et_cName = new EditText(getActivity());
                       EditText et_cDob = new EditText(getActivity());
                       EditText et_cSchoolName = new EditText(getActivity());
                       et_cName.setHint("Child name");
                       et_cDob.setHint("Date of birth");
                       et_cSchoolName.setHint("School name");
                       childNameList.add(et_cName);
                       childDOBList.add(et_cDob);
                       childSchoolNameList.add(et_cSchoolName);
                       et_cName.setLayoutParams(params);
                       et_cDob.setLayoutParams(params);
                       et_cSchoolName.setLayoutParams(params);
                        linearLayout.addView(et_cName);
                       linearLayout.addView(et_cDob);
                       linearLayout.addView(et_cSchoolName); } } });

共有2个答案

阎建德
2023-03-14

您可以使用EditText的属性addTextChangedListener。这是代码。

YourEditText.addTextChangedListener(new TextWatcher() {

    @Override
    public void afterTextChanged(Editable s) {
        int count = Integer.parseInt(YourEditText.getText().toString());
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start,
    int count, int after) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start,
    int before, int count) {

});

将编辑文本输入类型更改为数字,否则如果有人输入文本,您将面临错误。

Listview listview= (ListView) findViewById(R.id.your_list_view);
Adapter adapter = new adapter (YourActivity.this, count);
listview.setAdapter(adapter );

只需在计数部分输入listview计数,这里是适配器类

 public class Adapter extends BaseAdapter {

    // Declare Variables \\
    Context mContext;
    LayoutInflater inflater;
    int count;

    public Adapter (Context context, String count) {
        mContext = context;
        inflater = LayoutInflater.from(mContext);
        this.count = Integer.parseInt(count);
        //---------------------------\\
    }

    public class ViewHolder {

    }

    @Override
    public int getCount() {
        return count; // Your Desired Count which you entered in EditText \\
    }

    @Override
    public Object getItem(int position) {
        return null; 
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    public View getView(final int position, View view, ViewGroup parent) {
        final ViewHolder holder;
        if (view == null) {
            holder = new ViewHolder();
            view = inflater.inflate(R.layout.lv_items, null);
            yourTv = view.findViewById(R.id.lv_item_tv);
            view.setTag(holder);
        } else {
            holder = (ViewHolder) view.getTag();
        }

        return view;
    }}

无论何时更改listview计数,都必须初始化适配器和listview。希望有帮助!

邹祺
2023-03-14

您可以像这样使用TextWatcher()

editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {}

    @Override
    public void afterTextChanged(Editable s) {
        // Convert the editable to int.
        int userInput = Integer.parseInt(s.getText().toString());
        // First we want to copy the data ArrayList so we don't affect the original one.
        ArrayList<Data> new = copyArray(originalDataArrayList);
        // Then we want to run a for loop to change the item count depending on the userInput value.
        for (int i = 0; i < newArray.size(); i++){
          if (i >= userInput){
            newArray.remove(i);
        }
      }
        // Now we have ArrayList with the required size.
        // Here you create a new adapter and pass the new ArrayList to it and set the ListView adapter as the new adapter.
    }
});

复制ArrayList方法

    private ArrayList<Data> copyArray(ArrayList<Data> array) {
    ArrayList<Data> newArray = new ArrayList<>();
    newArray.addAll(array);
    return newArray;
}
 类似资料:
  • 我有这个布局。 但问题是,ExpandableListView总是以屏幕为中心,尽管父布局中有重力。我想要的是让它从ListView结束的地方开始。知道是什么原因吗?我应该使用滚动视图而不是线性布局吗? 我希望可扩展的listview出现在listview下方。

  • 是否有任何方法可以使用android: fillViewport="true"和一个子LinearLayout填充所有视图,当LinearLayout的内容不够高时? 到目前为止,在ScrollView中的LinearLayout中,我们必须使用Android:layout _ height = " wrap _ content "。我们可以添加一些东西来填充所有的滚动视图吗?

  • 在我的角js应用程序中有文本框,用户可以动态添加和更新数据。如何将这些映射到模态。这是一个简单的问题,我从我现在的用例中得到的。 http://jsfiddle.net/kiranmca04/d81fzLzf/1/ 当用户提交页面时,我需要修改json格式。可以在JSFIDLE中找到完整的html文件。 {info:[姓名:'Albert',年龄:'33',项目": [ { "desc":"tes

  • 这需要为N级…当用户点击添加电话视图将被添加… 怎么做??

  • 本文向大家介绍基于Android代码实现常用布局,包括了基于Android代码实现常用布局的使用技巧和注意事项,需要的朋友参考一下 关于 android 常用布局,利用 XML 文件实现已经有很多的实例了。但如何利用代码实现呢?当然利用代码实现没有太大的必要,也是不提倡的,但我觉得利用代码实现这些布局,可以更好的了解 SDK API ,所以在此也整理一些,和大家分享一下。 首先看一下,布局所对应的

  • 问题内容: 说我有一个像这样的数组: 如何计算具有给定值的数字(在示例中为空白)? 而且有效吗?(大约十二个数组,每个数组包含数百个元素)此示例超时(超过30秒): 在这种情况下,空白元素的数量为3。 问题答案: 如何使用array_count _values来获得一个为您计算一切的数组?