gpt4 book ai didi

安卓 : getChild() EditText values on button click in ExpandableListView

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:16 27 4
gpt4 key购买 nike

我正在 Android 中开发 Expandablelistview。

在 GroupView 中只有一个标题,每个组都有不同的 ChildView。

此代码运行良好,我能够在每个组项目中看到不同的 ChildView。

在 ChildView 中,我有一个 EditText,当我点击完成按钮时,我想获取用户输入的所有 EditText 和 Spinner 值。

当我当时点击完成按钮时,我想获取用户在组项目 Customer Location 等中填写的详细信息

举个例子:有问题的图片。我想获取用户在 vehicleTEST 组项中填写的输入详细信息。

拜托,我需要帮助,我想获取用户在每个组项子项的 EditText 中填写的值。

这是我的代码:

MainActivity.java

public class MainActivity extends Activity {

Context mContext;
private ExpandableListView mExpandableListView;
CustomAdapter mCustomAdapter;

ArrayList<String> newCalibration = new ArrayList<String>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

mContext = MainActivity.this;

newCalibration.add("CUSTOMER");
newCalibration.add("LOCATION");
newCalibration.add("VEHICLE");
newCalibration.add("TEST");
newCalibration.add("ABC");

/* genarate data for list view */
// genarateData();
/* instantiate adapter with our item list */
mCustomAdapter = new CustomAdapter(mContext, newCalibration);
/* we get list view */
mExpandableListView = (ExpandableListView) findViewById(R.id.explist_tools);
/* set adapter to list view */
mExpandableListView.setAdapter(mCustomAdapter);

mExpandableListView
.setOnGroupExpandListener(new OnGroupExpandListener() {

int previousGroup = -1;

@Override
public void onGroupExpand(int groupPosition) {
// TODO Auto-generated method stub
if (groupPosition != previousGroup) {
mExpandableListView.collapseGroup(previousGroup);
previousGroup = groupPosition;
}
}
});

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}

CustomAdapter.java

public class CustomAdapter extends BaseExpandableListAdapter {

private LayoutInflater layoutInflater;

/* list of parent */
private ArrayList<String> mParents;

public CustomAdapter(Context context, ArrayList<String> parents) {
super();
this.mParents = parents;
layoutInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public Object getChild(int parentPosition, int childPosition) {
return null;
}

@Override
public long getChildId(int parentPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
}

@Override
public View getChildView(int parentPosition, int childPosition, boolean b,
View convertView, ViewGroup viewGroup) {
if (convertView == null) {
convertView = layoutInflater
.inflate(R.layout.list_item_child, null);

}
EditText mEdTxt_1 = (EditText) convertView.findViewById(R.id.edtxt_1);
EditText mEdTxt_2 = (EditText) convertView.findViewById(R.id.edtxt_2);
EditText mEdTxt_3 = (EditText) convertView.findViewById(R.id.edtxt_3);
EditText mEdTxt_4 = (EditText) convertView.findViewById(R.id.edtxt_4);
EditText mEdTxt_5 = (EditText) convertView.findViewById(R.id.edtxt_5);
RelativeLayout relativeLayout = (RelativeLayout) convertView
.findViewById(R.id.relativeLayout);
mEdTxt_1.setVisibility(View.VISIBLE);
mEdTxt_2.setVisibility(View.VISIBLE);
mEdTxt_3.setVisibility(View.VISIBLE);
mEdTxt_4.setVisibility(View.VISIBLE);
mEdTxt_5.setVisibility(View.VISIBLE);
relativeLayout.setVisibility(View.VISIBLE);

if (mParents.get(parentPosition).equals("CUSTOMER")) {
mEdTxt_4.setVisibility(View.GONE);
mEdTxt_5.setVisibility(View.GONE);
relativeLayout.setVisibility(View.GONE);
} else if (mParents.get(parentPosition).equals("LOCATION")) {
mEdTxt_4.setVisibility(View.GONE);
mEdTxt_5.setVisibility(View.GONE);
relativeLayout.setVisibility(View.GONE);
} else if (mParents.get(parentPosition).equals("VEHICLE")) {
relativeLayout.setVisibility(View.GONE);
} else if (mParents.get(parentPosition).equals("TAXIMETER/BCT")) {
mEdTxt_3.setVisibility(View.GONE);
mEdTxt_4.setVisibility(View.GONE);
mEdTxt_5.setVisibility(View.GONE);
} else if (mParents.get(parentPosition).equals("TIRE SPECS")) {
mEdTxt_4.setVisibility(View.GONE);
mEdTxt_5.setVisibility(View.GONE);
relativeLayout.setVisibility(View.GONE);
}
return convertView;
}

@Override
public int getChildrenCount(int parentPosition) {
return 1;
}

@Override
public Object getGroup(int parentPosition) {
// TODO Auto-generated method stub
return mParents.get(parentPosition);
}

@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return mParents.size();
}

@Override
public long getGroupId(int parentPosition) {
// TODO Auto-generated method stub
return parentPosition;
}

@Override
public View getGroupView(int parentPosition, boolean isExpanded,
View convertView, ViewGroup viewGroup) {
TextView groupName = null;
String parent = (String) getGroup(parentPosition);
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.list_item_parent,
null);
}
groupName = (TextView) convertView.findViewById(R.id.txt_parentname);
groupName.setText(parent);
return convertView;
}

@Override
public boolean hasStableIds() {
return true;
}

@Override
public boolean isChildSelectable(int i, int i1) {
return true;
}

}

list_item_child.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/item_child"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<EditText
android:id="@+id/edtxt_1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:inputType="text" />

<EditText
android:id="@+id/edtxt_2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:inputType="text" />

<EditText
android:id="@+id/edtxt_3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:inputType="text" />

<EditText
android:id="@+id/edtxt_4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:inputType="text" />

<EditText
android:id="@+id/edtxt_5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:inputType="text" />

<RelativeLayout
android:id="@+id/relativeLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<RadioGroup
android:id="@+id/radio_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Radio 1" />

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Radio 2" />
</RadioGroup>

<TextView
android:id="@+id/txt_childname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/radio_group"
android:text="TaxiMeter ?"
android:textAppearance="?android:attr/textAppearanceSmall" />

<Switch
android:id="@+id/switch1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/radio_group"
android:text="Switch" />
</RelativeLayout>

</LinearLayout>

图片: enter image description here

enter image description here

谢谢!

最佳答案

您将无法遍历列表并直接从 View 中获取值,这可能是您打算做的事情。

相反,只需跟踪用户输入的值。您可以在适配器或 Activity 中保留字段名称 -> 值的 HashMap 。每次用户更改字段中的值时,使用散列映射中的新值更新该字段。当他们按下完成时,您可以遍历 map 以获取用户更改的所有字段以及他们将其更改为的值的列表。

要在用户更改字段时获取字段值,请使用 TextWatcher :

myEditText.addTextChangedListener(new TextWatcher() {
...
@Override
onTextChanged(CharSequence newText, int start, int before, int count) {
myMapOfFieldsToValues.set(myFieldName, newText);
}
}

您可以将其添加到适配器中的 getChildView。您可以从父项和子项的位置派生出 myFieldName。

关于安卓 : getChild() EditText values on button click in ExpandableListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17089151/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com