2016-10-13 1 views
-2

zu bekommen, wie Wert im Bearbeiten von Text aus erweiterbar recycelbar in Android zu bekommen, und ich verwenden, um diesen "com.thoughtbot: expandablerecyclerview: 1.0" Bibliothek in Android Studio. Kann nicht korrekten Wert erweiterbar recycelbarwie Wert im Bearbeiten von Text aus erweiterbaren recycelbar

public class MasterAdapter extends ExpandableRecyclerViewAdapter<ParentView, ChildView> { 

    private List<? extends ExpandableGroup> list; 
    private Activity activity; 
    private Button button; 

    public MasterAdapter(Activity activity, List<? extends ExpandableGroup> list) { 
     super(list); 
     this.activity = activity; 
     this.list = list; 
     button = (Button) activity.findViewById(R.id.btnOk); 
    } 

    @Override 
    public ParentView onCreateGroupViewHolder(ViewGroup parent, int viewType) { 

     View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.parent_view, parent, false); 
     ParentView parentView = new ParentView(view); 
     return parentView; 
    } 

    @Override 
    public ChildView onCreateChildViewHolder(ViewGroup parent, int viewType) { 
     View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.child_view, parent, false); 
     ChildView childView = new ChildView(view); 
     return childView; 
    } 

    @Override 
    public void onBindChildViewHolder(final ChildView holder, int flatPosition, ExpandableGroup group, int childIndex) { 
     DataValue dataValue = ((MainData) group).getItems().get(childIndex); 
     holder.Bind(dataValue); 
// 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
//    String editTextData = ((EditText) view).getText().toString().trim(); 
       String editTextData = holder.editText.getText().toString().trim(); 

       if (holder.editText!=null) { 
//     Toast.makeText(activity, editTextData, Toast.LENGTH_LONG).show(); 
        Toast.makeText(activity, editTextData, Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 
    } 

    @Override 
    public void onBindGroupViewHolder(ParentView holder, int flatPosition, ExpandableGroup group) { 
     holder.getTitle(group); 
    } 
} 

ParentView.class

public class ParentView extends GroupViewHolder { 

    TextView textView; 

    public ParentView(View view) { 
     super(view); 
     textView = (TextView) view.findViewById(R.id.parentName); 
    } 

    public void getTitle(final ExpandableGroup group) { 
     textView.setText(group.getTitle()); 
    } 
} 

ChildView.class

public class ChildView extends ChildViewHolder { 

    EditText editText; 
    String string; 

    public ChildView(View view) { 
     super(view); 
     editText = (EditText) view.findViewById(R.id.childtName); 

    } 
    public void Bind(DataValue dataValue) { 
     editText.setText(dataValue.getName()); 

    } 

} 

DataValue.class

erhalten
public class DataValue implements Parcelable { 

    private String title; 
    private String name; 

    public DataValue(String title, String name) { 
     this.title = title; 
     this.name = name; 
    } 

    public DataValue(String name) { 
     this.name = name; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    @Override 
    public int describeContents() { 
     return 0; 
    } 

    @Override 
    public void writeToParcel(Parcel parcel, int i) { 

    } 

MAINDATA

public class MainData extends ExpandableGroup<DataValue> { 

    public MainData(String title, List<DataValue> items) { 
     super(title, items); 
    } 
} 
+0

poste deinen Code plz –

Antwort

0

Ich glaube, Sie Schnittstelle, wenn der Benutzer Klick auf den Button zu handhaben können und Eingabetext erhalten.

Schritt 1: Definieren Schnittstelle

public interface GetInputListener{ 

public void getInput(String message); 

} 

Schritt 2: Verwenden Sie Schnittstelle auf der Adapterklasse:

public class MasterAdapter extends ExpandableRecyclerViewAdapter<ParentView, ChildView> { 

    private List<? extends ExpandableGroup> list; 
    private Activity activity; 
    private Button button; 
    private GetInputListener getInputListener; 

    public MasterAdapter(Activity activity, List<? extends ExpandableGroup> list, GetInputListener listener) { 
     super(list); 
     this.activity = activity; 
     this.list = list; 
     button = (Button) activity.findViewById(R.id.btnOk); 
     this.getInputListener = listener; 
    } 

    @Override 
    public ParentView onCreateGroupViewHolder(ViewGroup parent, int viewType) { 

     View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.parent_view, parent, false); 
     ParentView parentView = new ParentView(view); 
     return parentView; 
    } 

    @Override 
    public ChildView onCreateChildViewHolder(ViewGroup parent, int viewType) { 
     View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.child_view, parent, false); 
     ChildView childView = new ChildView(view); 
     return childView; 
    } 

    @Override 
    public void onBindChildViewHolder(final ChildView holder, int flatPosition, ExpandableGroup group, int childIndex) { 
     DataValue dataValue = ((MainData) group).getItems().get(childIndex); 
     holder.Bind(dataValue); 

     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       //String editTextData = ((EditText) view).getText().toString().trim(); 
       String editTextData = holder.editText.getText().toString().trim(); 

       if (holder.editText!=null) { 
        listener.getInput(editTextData); 
       } 
      } 
     }); 
    } 

    @Override 
    public void onBindGroupViewHolder(ParentView holder, int flatPosition, ExpandableGroup group) { 
     holder.getTitle(group); 
    } 
} 

Schritt 3: Verwenden Sie Adapter und Eingang Hörer für diesen Adapter. In der Callback-Methode getInput() können Sie eine Eingabe von editiertext erhalten.

@Override 
public void getInput(String message){ 

} 

Ich denke, es wird Ihnen helfen.

Verwandte Themen