Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 带有edittext和复选框的片段listview中的随机行为_Android_Listview_Android Fragments - Fatal编程技术网

Android 带有edittext和复选框的片段listview中的随机行为

Android 带有edittext和复选框的片段listview中的随机行为,android,listview,android-fragments,Android,Listview,Android Fragments,选中复选框并将文本插入listvew中的edittext时,无论是在滚动还是不滚动时,它们似乎在列表项之间随机迁移。 我已经尝试实现了以下链接中可以找到的持有者和其他解决方案,但没有效果 如果您对我的困境有任何建议,我们将不胜感激。 下面是上述程序的代码 项目适配器 public class ItemAdapter extends ArrayAdapter<Item> { public static boolean isitpopulated; public static i

选中复选框并将文本插入listvew中的edittext时,无论是在滚动还是不滚动时,它们似乎在列表项之间随机迁移。
我已经尝试实现了以下链接中可以找到的持有者和其他解决方案,但没有效果


如果您对我的困境有任何建议,我们将不胜感激。

下面是上述程序的代码

项目适配器

public class ItemAdapter extends ArrayAdapter<Item> {

public static boolean isitpopulated;
public static int DrawerInUse;
public static int ListLoc;


public ItemAdapter(Activity context, ArrayList<Item> items) {
    super(context, 0, items);
}

@Override
public View getView(final int position, final View convertView, final ViewGroup parent) {
    // Check if the existing view is being reused, otherwise inflate the view
    View listItemView = convertView;

    if (listItemView == null) {
        listItemView = LayoutInflater.from(getContext()).inflate(
                R.layout.list_item, parent, false);

    }
        // Get the {@link Item} object located at this position in the list
        final Item currentItem = getItem(position);
        final Item currentposs = getItem(position);

        // Find the TextView in the list_item.xml layout with the ID version_name
        TextView itemTextView = (TextView) listItemView.findViewById(R.id.item);

        CheckBox check = listItemView.findViewById(R.id.checkbox);

        final TextView quantityTextView = (TextView) listItemView.findViewById(R.id.quantity);
        String listcontent = quantityTextView.getText().toString();

        int drawer = Drawers.DrawerChosen;            

        // Get the version name from the current object and
        // set this text on the name TextView
        itemTextView.setText(currentItem.getItem());

        TextView infoTextView = (TextView) listItemView.findViewById(R.id.info);
        infoTextView.setText(currentItem.getInfo());

        TextView doseTextView = (TextView) listItemView.findViewById(R.id.dose);
        doseTextView.setText(currentItem.getDose());

        TextView typeTextView = (TextView) listItemView.findViewById(R.id.type);
        typeTextView.setText(currentItem.getType());
        // website with solution
        //https://stackoverflow.com/questions/11190390/checking-a-checkbox-in-listview-makes-other-random-checkboxes-checked-too

    if (listcontent.isEmpty()) {
            quantityTextView.setText(currentItem.getQuantity());

            System.out.println("Drawer: "+drawer+" Position: "+position);

            if (drawer < 9) {
                String Liststatus = ListProcessing.wagon[0][drawer][position][5];
                if (Liststatus.equals("true")) {
                    // make box cheked
                    CheckBox checktemp = listItemView.findViewById(R.id.checkbox);
                    checktemp.setChecked(true);
                    System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA: " + ListProcessing.wagon[0][drawer][position][5]);
                }
            }

            if (drawer == 10) {
            //String FListstatus = ListProcessing.finalWagon[position][5];
                /*
                if (FListstatus.equals("true")) {
                    CheckBox checktemp = listItemView.findViewById(R.id.checkbox);
                    checktemp.setChecked(true);
                    System.out.println("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB");
                }
                */
            }

            // if(listcontent.isEmpty()) {
            //final CheckBox check = listItemView.findViewById(R.id.checkbox);

            final View listItemView1 = listItemView;

            //reset and Populating list
            final String itemName = currentposs.getItem();
            String itemInfo = currentposs.getInfo();
            String itemDose = currentposs.getDose();
            String itemQuantity = currentposs.getQuantity();
            String itemType = currentposs.getType();
            // populateList(position,itemName,itemInfo,itemDose,itemQuantity,itemType);

            // when chekbox is ticked then list is amended
            check.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    CheckBox checkBox = (CheckBox) v;
                    ListProcessing d = new ListProcessing();
                    if (checkBox.isChecked()) {

                        if (Drawers.DrawerChosen <= 10) {
                            d.wagon[0][Drawers.DrawerChosen][position][5] = "true";                                
                        } else if (Drawers.DrawerChosen == 10) {
                            d.finalWagon[position][5] = "true";
                        }
                    } else if (checkBox.isChecked() == false) {
                        if (Drawers.DrawerChosen < 10) {
                            d.wagon[0][Drawers.DrawerChosen][position][5] = "false";
                        } else if (Drawers.DrawerChosen == 10) {
                            d.finalWagon[position][5] = "false";
                        }
                    }
                }
            });

            final TextView quantityTextView1 = (TextView) listItemView1.findViewById(R.id.quantity);
            String userinput = quantityTextView1.getText().toString();
           listItemView.findViewById(R.id.quantity);
            quantityTextView1.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                    // System.out.println("!!!!!!!!!!!!!!!!!!!!!!beforeTextChanged!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                }
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                    //System.out.println("!!!!!!!!!!!!!!!!!!!!!!onTextChanged!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                }

                //@Override
                public void afterTextChanged(Editable s) {
                    System.out.println("!!!!!!!!!!!!!!!!!!!!!!afterTextChanged!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                    String numberInserted;
                    final View listItemView2 = listItemView1;
                    final TextView quantityTextView2 = (TextView) listItemView2.findViewById(R.id.quantity);
                    String userinput = quantityTextView2.getText().toString();
                    //System.out.println("user input: " + userinput + "-------------------------------");
                    //if (userinput.isEmpty()) {

                    int drawer = Drawers.DrawerChosen;
                    //ListProcessing.wagon[0][drawer][position][3] = userinput;
                    //System.out.println("ListProcessing.wagon[0]["+drawer+"]["+position+"][3]: " + ListProcessing.wagon[0][drawer][position][3] + "-------------------------------");
                    ListProcessing.ChangeData(drawer, position, userinput);
                }
            });
        }


        if (currentItem.isCheckBox()) {
            check.setVisibility(View.VISIBLE);
        } else {
            check.setVisibility(View.GONE);
        }

        if (currentItem.isInfo()) {
            infoTextView.setVisibility(View.VISIBLE);
        } else {
            infoTextView.setVisibility(View.GONE);
        }

        if (currentItem.isDose()) {
            doseTextView.setVisibility(View.VISIBLE);
        } else {
            doseTextView.setVisibility(View.GONE);
        }

        if (currentItem.isQuantity()) {
            quantityTextView.setVisibility(View.VISIBLE);
        } else {
            quantityTextView.setVisibility(View.GONE);
        }


    return listItemView;
}
}


package com.example.notandi.hospitalwagons;
众多碎片中的一个

public class drawer_med_Fragment extends Fragment {

public int[] quantityArr;

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

    getActivity().setTitle(R.string.medicine_drawer);

    ArrayList<Item> items = new ArrayList<Item>();

    String[] itemArr = getResources().getStringArray(R.array.medicine_drawer_items);
    String[] infoArr = getResources().getStringArray(R.array.medicine_drawer_info);
    String[] doseArr = getResources().getStringArray(R.array.medicine_drawer_dose);
    String[] typeArr = getResources().getStringArray(R.array.medicine_drawer_type);
    int[] quantityArr= new int[26];
    for(int i=0;i<26;i++){
        int a = Integer.parseInt(ListProcessing.wagon[0][1][i][3]);
        quantityArr[i]=a;
        }

    String item;
    String info;
    String dose;
    String type;
    int quantity;

    for (int i = 0; i < itemArr.length; i++) {

        item = itemArr[i];
        info = infoArr[i];
        dose = doseArr[i];
        quantity = quantityArr[i];
        type = typeArr[i];
        items.add(new Item(item, info, dose, quantity, type));
    }

    ItemAdapter adapter = new ItemAdapter(getActivity(), items);

    ListView listView = (ListView) rootView.findViewById(R.id.list);

    listView.setAdapter(adapter);

    return rootView;
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    setRetainInstance(true);
}
//public void startlistTop(){
  //  quantityArr =  getResources().getIntArray(R.array.medicine_drawer_quantity);
//}
  }
public类drawer\u med\u片段扩展片段{
公共int[]数量arr;
@可空
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.word\u列表,容器,false);
getActivity().setTitle(R.string.medicine_抽屉);
ArrayList items=新建ArrayList();
String[]itemArr=getResources().getStringArray(R.array.medicine\u drawer\u items);
字符串[]infoArr=getResources().getStringArray(R.array.medicine\u drawer\u info);
字符串[]doserr=getResources().getStringArray(R.array.medicine\u drawer\u dose);
字符串[]typeArr=getResources().getStringArray(R.array.medicine\u drawer\u type);
int[]quantityArr=新int[26];

for(int i=0;i适配器中最有可能出现的问题。每个if语句也必须添加else语句。类似于:

if (listcontent.isEmpty()) {
  quantityTextView.setText(currentItem.getQuantity());
} else {
  quantityTextView.setText("");
}

if (drawer < 9) {
...
} else {
...
}
if(listcontent.isEmpty()){
quantityTextView.setText(currentItem.getQuantity());
}否则{
quantityTextView.setText(“”);
}
如果(抽屉<9){
...
}否则{
...
}

适配器中最有可能出现的问题。每个if语句都必须添加else语句。类似于:

if (listcontent.isEmpty()) {
  quantityTextView.setText(currentItem.getQuantity());
} else {
  quantityTextView.setText("");
}

if (drawer < 9) {
...
} else {
...
}
if(listcontent.isEmpty()){
quantityTextView.setText(currentItem.getQuantity());
}否则{
quantityTextView.setText(“”);
}
如果(抽屉<9){
...
}否则{
...
}