2016-09-19 9 views
1

編集テキストから新しい値を追加するたびに、最初のテキストが消え、最近追加されたテキストが表示されます。これはどうして起こっていますか?これは私のアダプタクラスです。RecyclerViewアイテムを追加するが、インティタールアイテムを置き換える

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ItemHolder> { 


private List<String> itemsName; 
private OnItemClickListener onItemClickListener; 
private LayoutInflater layoutInflater; 

public RecyclerViewAdapter(Context context){ 
    layoutInflater = LayoutInflater.from(context); 
    itemsName = new ArrayList<String>(); 
} 

@Override 
public RecyclerViewAdapter.ItemHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View itemView = layoutInflater.inflate(R.layout.text_view, parent, false); 
    return new ItemHolder(itemView, this); 
} 

@Override 
public void onBindViewHolder(RecyclerViewAdapter.ItemHolder holder, int position) { 
    holder.setItemName(itemsName.get(position)); 

} 

@Override 
public int getItemCount() { 
    return itemsName.size(); 
} 

public void setOnItemClickListener(OnItemClickListener listener){ 
    onItemClickListener = listener; 
} 

public OnItemClickListener getOnItemClickListener(){ 
    return onItemClickListener; 
} 

public interface OnItemClickListener{ 
    public void onItemClick(ItemHolder item, int position); 
} 

public void add(int location, String iName){ 
    itemsName.add(location, iName); 
    notifyItemInserted(location); 
} 

public static class ItemHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ 

    private RecyclerViewAdapter parent; 
    TextView textItemName; 

    public ItemHolder(View itemView, RecyclerViewAdapter parent) { 
     super(itemView); 
     itemView.setOnClickListener(this); 
     this.parent = parent; 
     textItemName = (TextView) itemView.findViewById(R.id.textview); 
    } 

    public void setItemName(CharSequence name){ 
     textItemName.setText(name); 
    } 

    public CharSequence getItemName(){ 
     return textItemName.getText(); 
    } 

    @Override 
    public void onClick(View v) { 
     final OnItemClickListener listener = parent.getOnItemClickListener(); 
     if(listener != null){ 
      listener.onItemClick(this, getPosition()); 
     } 
    } 
}} 

これは、ボタンのクリック時に編集テキストフィールド値を送信するアクティビティです。

btnsave =(Button) findViewById(R.id.btn_save); 
    btnsave.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 


      String newName = txtHeading.getText().toString(); 

      Intent intent = new Intent(getApplicationContext(),BuilderPage.class); 
      intent.putExtra("key",newName); 

      startActivity(intent); 
      Toast.makeText(MyEditor 
        .this,"You added" +newName.toUpperCase()+ "in your view",Toast.LENGTH_LONG).show(); 
     } 
    }); 

これは、項目を表示する必要があるBuilder.Activityです。あなたが作成とのonCreateにアダプタを設定している

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/coordinatorLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <android.support.v7.widget.RecyclerView 
    android:id="@+id/recyclerView_builderxml" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:animateLayoutChanges="false" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 



<android.support.design.widget.AppBarLayout 
    android:id="@+id/appBarLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar_builderxml" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:layout_scrollFlags="scroll|enterAlways" > 

     <EditText 
      android:layout_width="350dp" 
      android:id="@+id/edittxtsurvey" 
      android:layout_height="wrap_content" 
      android:hint="Enter Your SurveyName"/> 


     </android.support.v7.widget.Toolbar> 

    </android.support.design.widget.AppBarLayout> 


    <RelativeLayout android:id="@+id/LinearLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:gravity="bottom" > 


    <SlidingDrawer android:layout_width="wrap_content" 
     android:id="@+id/SlidingDrawer" 
     android:handle="@+id/slideHandleButton" 
     android:content="@+id/contentLayout" 
     android:padding="10dip" 
     android:layout_height="120dip"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/slideHandleButton" 

      android:src="@drawable/arrowdown"> 

     </ImageView> 

     <RelativeLayout 
      android:layout_width="wrap_content" 
      android:background="#1a237e" 
      android:id="@+id/contentLayout" 
      android:gravity="center|top" 
      android:padding="10dip" 
      android:layout_height="wrap_content"> 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/plaintext" 
       android:id="@+id/imgviewplaintext" 
       android:padding="5dp" 
       android:onClick="oOnClick_PlainText" 
       android:layout_alignParentTop="true" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true" /> 


      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/checkbox" 
       android:id="@+id/imgviewcheckbox" 
       android:onClick="OnClick_CheckBox" 
       android:padding="5dp" 
       android:layout_alignParentTop="true" 
       android:layout_toLeftOf="@+id/imgviewradiobutton" 
       android:layout_toStartOf="@+id/imgviewradiobutton" 
       android:layout_marginRight="21dp" 
       android:layout_marginEnd="21dp" /> 



      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/radio" 
       android:id="@+id/imgviewradiobutton" 
       android:padding="5dp" 
       android:onClick="OnClick_RadioButton" 
       android:layout_alignParentTop="true" 
       android:layout_toLeftOf="@+id/imgviewtextbox" 
       android:layout_toStartOf="@+id/imgviewtextbox" 
       android:layout_marginRight="37dp" 
       android:layout_marginEnd="37dp" /> 


      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/textbox" 
       android:id="@+id/imgviewtextbox" 
       android:onClick="onClick_textbox" 
       android:padding="5dp" 
       android:layout_alignParentTop="true" 
       android:layout_alignParentRight="true" 
       android:layout_alignParentEnd="true" 
       android:layout_marginRight="30dp" 
       android:layout_marginEnd="30dp" /> 
     </RelativeLayout> 

    </SlidingDrawer> 

    </RelativeLayout> 
    </android.support.design.widget.CoordinatorLayout> 
+0

ここでは、これは「これはアイテムを表示する必要があるBuilder.Activity」の下のブロックを呼び出しています。メソッドまたはonCreateで?それを指定してください。 –

+0

ok私は –

答えて

0

アイテムが置き換えられていないとは思われません。しかし、クリックするたびに新しいインスタンスが作成されるため、毎回新しい値やデータが表示されます。追加したデータをどこかに保存する必要があります。あなたはDataStorageOptionsInAndroidです。それで、データを保存するための任意のオプションを実行することができます。

1

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.builder_layout); 
    ButterKnife.bind(this); 
    setSupportActionBar(toolbar1); 
    getSupportActionBar().setDisplayShowTitleEnabled(false); 

    dbHelper = new DbHelper(this); 
    dbHelper.getWritableDatabase(); 

    String nameList = getIntent().getStringExtra("key"); 

    myRecyclerView = (RecyclerView)findViewById(R.id.recyclerView_builderxml); 
    linearLayoutManager = new 
      LinearLayoutManager(this, LinearLayoutManager.VERTICAL,false); 

    myRecyclerViewAdapter = new RecyclerViewAdapter(this); 
    myRecyclerViewAdapter.setOnItemClickListener(this); 
    myRecyclerView.setAdapter(myRecyclerViewAdapter); 
    myRecyclerView.setLayoutManager(linearLayoutManager); 
    myRecyclerViewAdapter.add(0,nameList); 

ビルダークラスのXMLがあります。常に新しいインスタンスを作成します。

myRecyclerView.setAdapter(myRecyclerViewAdapter); 

このようにした後、次のようにします。

myRecyclerViewAdapter.add(0,nameList); 
    myRecyclerViewAdapter.add(1,nameList); 
    myRecyclerViewAdapter.add(2,nameList); 
    myRecyclerViewAdapter.add(3,nameList); 

ロジックを変更してください。文字列で名前リストを渡さないでください。すべての名前を取得し、それをそのアクティビティに送信し、その値を文字列配列として取得するか、そのアクティビティ自体からすべての名前を取得します。その配列をリサイクラービューに設定します。

+0

を編集して0,1を追加します。これは問題を解決しません。あなたのロジックを実装する方法を共有できますか?私は初心者です。 –

+0

アプリケーションの "nameList"をどのように取得していますか?あなたがどこにいるのか教えてください。私はあなたをさらに助けます。 –

+0

ArrayList nameList = getIntent()。getStringArrayListExtra( "key");これはBuilderクラスで呼び出されました –

関連する問題