Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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
Java 从RecyclerView中的子级获取值_Java_Android_Android Recyclerview_Children - Fatal编程技术网

Java 从RecyclerView中的子级获取值

Java 从RecyclerView中的子级获取值,java,android,android-recyclerview,children,Java,Android,Android Recyclerview,Children,我和RecyclerView有活动。RecyclerView行布局代码如下。在行布局中,我有编辑文本。当用户填写edittext时,我希望在RecyclerView中从这些edittext中获取值。我无法得到正确的值。看起来适配器返回了错误的值,或者我不知道问题出在哪里。知道我做了什么坏事吗 <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns

我和RecyclerView有活动。RecyclerView行布局代码如下。在行布局中,我有编辑文本。当用户填写edittext时,我希望在RecyclerView中从这些edittext中获取值。我无法得到正确的值。看起来适配器返回了错误的值,或者我不知道问题出在哪里。知道我做了什么坏事吗

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/cv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:foreground="?android:attr/selectableItemBackground"
card_view:cardBackgroundColor="#fff"
card_view:cardCornerRadius="2dp"
card_view:cardElevation="2sp"
android:layout_marginBottom="6dp"
android:orientation="horizontal"
android:padding="10dp"
android:weightSum="5"
>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="10dp"
    android:weightSum="5">

    <TextView
        android:id="@+id/exercise_name"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:gravity="center_vertical"
        android:layout_gravity="center_vertical"
        android:textColor="#ab000000"
        android:textSize="16sp" />

    <EditText
        android:id="@+id/et_repeats"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:inputType="number"
        android:gravity="center"
        android:layout_gravity="center"
        android:textColor="@color/float_label"
        android:textSize="18sp" />

    <EditText
        android:id="@+id/et_weight"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:layout_gravity="center"
        android:inputType="number"
        android:textColor="@color/float_label"
        android:textSize="18sp" />

</LinearLayout>

公共类系列适配器扩展了RecyclerView.Adapter{
私有ArrayList系列=空;
私有上下文=null;
公共序列适配器(ArrayList系列,上下文){
本系列=系列;
this.context=上下文;
}
@凌驾
public SeriesAdapter.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=LayoutFlater.from(parent.getContext()).flate(R.layout.series\u scr\u row,parent,false);
SeriesAdapter.ViewHolder ViewHolder=new ViewHolder(视图,new SeriesAdapter.ViewHolder.IMyViewHolderClicks(){
@凌驾
public void onRowClick(查看调用方,int位置){
long id=series.get(position).idSeries;
doAction(id);
}
},新的ViewHolder.imyView文件夹ClickSlong(){
@凌驾
行ClickLong上的公共无效(查看调用者,int位置){
long id=series.get(position).idSeries;
doActionLong(id);
}
});
返回视图持有者;
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
holder.exercise_name.setText(++position+context.getResources().getString(R.string.series_label));
holder.et_repeats.addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
}
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
}
@凌驾
公共无效后文本更改(可编辑ss){
}
});
}
@凌驾
公共长getItemId(int位置){
返回序列.get(position).idSeries;
}
@凌驾
public int getItemCount(){
return series.size();
}
私有无效操作(长id){
HashMap HashMap=新的HashMap();
hashMap.put(“id”,id);
startMyActivity(上下文、SeriesActivity.class、hashMap、false);
}
私有void doActionLong(长id){
}
公共静态类ViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener、View.OnLongClickListener{
公共文本视图名称;
公共编辑文本等重复;
公共编辑文本权重;
公共imyviewholder-mListener;
公共文件夹长时间单击;
公共视图持有者(视图项布局视图、IMyViewHolderClicks监听器、IMyViewHolderClicks长监听器){
超级(itemLayoutView);
mListener=监听器;
mListenerLong=listenerLong;
exercise\u name=(TextView)itemLayoutView.findViewById(R.id.exercise\u name);
et_repeats=(EditText)itemLayoutView.findViewById(R.id.et_repeats);
et_-weight=(EditText)itemLayoutView.findViewById(R.id.et_-weight);
itemLayoutView.setOnClickListener(此);
itemLayoutView.setOnLongClickListener(此);
}
@凌驾
公共void onClick(视图v){
onRowClick(v,getAdapterPosition());
}
@凌驾
仅长按公共布尔值(视图v){
mListenerLong.onRowClickLong(v,getAdapterPosition());
返回true;
}
公共界面IMyViewHolderClicks{
public void onRowClick(查看调用者,int位置);
}
公共界面IMyViewHolderClicksLong{
行ClickLong上的公共无效(查看调用者,int位置);
}
}
}

在活动中,我尝试获取如下值:

            for (int i = 0; i < rv_series_list.getAdapter().getItemCount(); i++) {
            CardView cardView = (CardView) rv_series_list.getChildAt(i);
            LinearLayout linearLayout = (LinearLayout) cardView.getChildAt(0);

            EditText etWeight = (EditText)linearLayout.getChildAt(1);
            EditText etRepeat = (EditText)linearLayout.getChildAt(2);

            db.addRecord( new Records(-1,++i,
                    Integer.parseInt(etWeight.getText().toString()) ,
                    Integer.parseInt(etRepeat.getText().toString()), idOfExercise, -1));
        }
for(int i=0;i
使用RecyclerView,在数据中查找模式。如果您注意到任何问题,请在此处发布并发表评论,以便StackOverflow社区能够更好地识别和解决该问题。如果您注意到任何问题,请在此处发布并发表评论,以便StackOverflow社区能够更好地识别和解决该问题。
            for (int i = 0; i < rv_series_list.getAdapter().getItemCount(); i++) {
            CardView cardView = (CardView) rv_series_list.getChildAt(i);
            LinearLayout linearLayout = (LinearLayout) cardView.getChildAt(0);

            EditText etWeight = (EditText)linearLayout.getChildAt(1);
            EditText etRepeat = (EditText)linearLayout.getChildAt(2);

            db.addRecord( new Records(-1,++i,
                    Integer.parseInt(etWeight.getText().toString()) ,
                    Integer.parseInt(etRepeat.getText().toString()), idOfExercise, -1));
        }