Android:Fragment里面的ArrayAdapter里面的EditText

时间:2014-07-23 17:48:12

标签: listview arraylist android-edittext fragment android-arrayadapter

标题中描述的情况。

这里的最小示例代码:

public class FrgData extends Fragment {
    private View rootView;
    private DataAdapter dataAdapter;

    public FrgData() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.data, container, false);

        ListView dataListView = (ListView)rootView.findViewById(R.id.Data);
        dataAdapter = new DataAdapter(getActivity().getBaseContext(), R.layout.data_item);
        dataListView.setAdapter(dataAdapter);

        for (int i = 0; i < 40; i++) {
            dataAdapter.add(new tData());
        }

        return rootView;
    }

    private class DataAdapter extends ArrayAdapter<tData> {
        public DataAdapter(Context context, int id) {
            super(context, id);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;

            if (v == null) {
                v = LayoutInflater.from(getContext()).inflate(R.layout.data_item, null);
            }

            return v;
        }
    }
}

“tData”是一个ArrayList。

“data_item”是水平LinearLayout中的简单数字EditText。

这种行为完全不稳定。 EditTexts完美创建。问题是,如果我选择一个,键盘首先不是“数字”,而是字母数字。如果我选择另一个,键盘会神奇地改为“数字”,但光标是不可见的。不过我可以输入。退出键盘时,数字在下面的其他EditTexts中消失或重复!这些副本似乎以相等的间隔(8或12)出现,所以我怀疑这与正确的初始化有关(或缺乏)。 我无法弄清楚我的错误。

1 个答案:

答案 0 :(得分:0)

我目前的“解决方案”是手动(!)添加40行。我现在工作,虽然这是一个非常丑陋的情况。每行需要3个EditTexts和一个SeekBar。整个片段现在有160个控件...... 我想知道是否有更好的方法?用户在编辑其中时需要概述所有其他设置。