如何将EditText存储到带按钮的

时间:2016-08-26 21:07:23

标签: java android xml listview android-edittext

我刚开始使用android,所以到目前为止,我还没有太多东西可以展示......

我正在努力制作待办事项列表。我已经看到tutorials关于如何使用输入菜单执行此操作并将任务显示在ListView中,但是我希望用户将任务输入到EditText中。我正在使用this(它没有使用ListView)只需按一下按钮就可以在EditText下面创建一个新的TextView,但是我无法在TextView旁边添加按钮来删除它(当用户完成任务时)。

使用ListView似乎要容易得多,但是如何让EditText输入转到ListView,其中包含所有任务和按钮以将其删除(永久性,而不仅仅是将可见性设置为0)?我还希望存储任务,因此用户可以关闭应用程序并返回仍然存在的任务。

有什么想法吗?我没有取得多大进展。

1 个答案:

答案 0 :(得分:0)

我建议您使用RecyclerView而不是Listview。在你的Gradle中编译它

    compile 'com.levelupstudio:expandable-recyclerview:1.0.1'

这是mainActivity.java

public class MainActivity extends ActionBarActivity implements    
RecyclerViewAdapter.OnItemClickListener{

private RecyclerView myRecyclerView;
private LinearLayoutManager linearLayoutManager;
private RecyclerViewAdapter myRecyclerViewAdapter;

EditText nameField;
Button btnAdd;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myRecyclerView = (RecyclerView)findViewById(R.id.myrecyclerview);

    linearLayoutManager =
            new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
    /*
    linearLayoutManager =
            new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
    */

    myRecyclerViewAdapter = new RecyclerViewAdapter(this);
    myRecyclerViewAdapter.setOnItemClickListener(this);
    myRecyclerView.setAdapter(myRecyclerViewAdapter);
    myRecyclerView.setLayoutManager(linearLayoutManager);

    nameField = (EditText)findViewById(R.id.namefield);
    btnAdd = (Button)findViewById(R.id.addbutton);
    btnAdd.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            String newName = nameField.getText().toString();

          Context context= getApplicationContext();
                myRecyclerViewAdapter.add(0,newName);
            Toast.makeText(context,"You added" +newName.toUpperCase()+ "in your view",Toast.LENGTH_LONG).show();

        }
    });
}

 @Override
public void onItemClick(RecyclerViewAdapter.ItemHolder item, int position) {
    Toast.makeText(this,
            "Remove " + position + " : " + item.getItemName(),
          Toast.LENGTH_SHORT).show();
}}

适用于Recycler的AdapterClass

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;

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.list_item, 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.item_name);
    }

    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());
        }
    }
}}

和你的xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical">


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <EditText
        android:id="@+id/namefield"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/addbutton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Add"/>
</LinearLayout>

<android.support.v7.widget.RecyclerView
    android:id="@+id/myrecyclerview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

list_xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:layout_marginTop="16dp"
    android:background="@android:color/holo_blue_light"
    android:orientation="vertical">

    <TextView
        android:id="@+id/item_name"
        android:layout_centerVertical="true"
        android:layout_margin="16dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


</RelativeLayout>