首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RecyclerView添加项目,但替换初始项目

RecyclerView添加项目,但替换初始项目
EN

Stack Overflow用户
提问于 2016-09-19 19:44:31
回答 2查看 81关注 0票数 1

每次我从编辑文本中添加新值时,初始文本都会消失,最近添加的文本会发生appears.Why吗?这是我的适配器类。

代码语言:javascript
运行
复制
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());
        }
    }
}}

这是我在单击按钮时发送编辑文本字段值的活动。

代码语言:javascript
运行
复制
    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。

代码语言:javascript
运行
复制
@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类为

代码语言:javascript
运行
复制
   <?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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-30 18:56:27

并不是您认为每次单击项目时都会创建新的实例,因此每次您看到新值或replaced.But时,您都需要保存您添加的数据,然后使用somewhere.You DataStorageOptionsInAndroid。因此,您可以选择任何选项来保存数据。

票数 0
EN

Stack Overflow用户

发布于 2016-09-19 20:25:50

您正在onCreate上创建和设置适配器。它将始终创建一个新实例。

代码语言:javascript
运行
复制
  myRecyclerView.setAdapter(myRecyclerViewAdapter);

在此之后,应采用以下方式。

代码语言:javascript
运行
复制
   myRecyclerViewAdapter.add(0,nameList);
   myRecyclerViewAdapter.add(1,nameList);
   myRecyclerViewAdapter.add(2,nameList);
   myRecyclerViewAdapter.add(3,nameList);

试着改变你的逻辑。不要通过字符串传递名称列表。获取所有名称并将其发送到该活动,然后以字符串数组的形式获取这些值,或者从该活动本身获取所有名称。将该数组设置为回收器视图。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39572384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档