2017-10-14 85 views
0

我不是很擅长android编程。我可以用cardview和recyclerview做这个布局。Cardview与editText和Recyclerview

但我需要有一个2监听每个卡EDITTEXT。 OnFocusChange侦听器和OnTextChange侦听器。我必须得到每个editText的文本。 我要做什么? 这是我当前的代码:

对象:

public class unitObject { 

private String mtitle; 
private String mhint; 

unitObject(String title, String hint){ 
    mtitle=title; 
    mhint=hint; 
} 
public String getMtitle() { 
    return mtitle; 
} 

public String getMhint() { 
    return mhint; 
} 

public void setMtitle(String mtitle) { 
    this.mtitle = mtitle; 
} 

public void setMhint(String mhint) { 
    this.mhint = mhint; 
} 
} 

回收站适配器:

public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.DataObjectHolder> { 
private static String LOG_TAG = "MyRecyclerViewAdapter"; 
private ArrayList<unitObject> mDataset; 
private static MyClickListener myClickListener; 

public static class DataObjectHolder extends RecyclerView.ViewHolder 
     implements View 
     .OnClickListener { 
    TextView title; 
    TextView ET_hint; 
    String content; 

    public DataObjectHolder(View itemView) { 
     super(itemView); 
     title = (TextView) itemView.findViewById(R.id.textView); 
     ET_hint = (TextView) itemView.findViewById(R.id.editText); 
     Log.i(LOG_TAG, "Adding Listener"); 
     itemView.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     myClickListener.onItemClick(getAdapterPosition(), v); 
    } 
} 



public MyRecyclerViewAdapter(ArrayList<unitObject> myDataset) { 
    mDataset = myDataset; 
} 

@Override 
public DataObjectHolder onCreateViewHolder(ViewGroup parent, 
              int viewType) { 
    View view = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.card_view_row, parent, false); 

    DataObjectHolder dataObjectHolder = new DataObjectHolder(view); 
    return dataObjectHolder; 
} 

@Override 
public void onBindViewHolder(DataObjectHolder holder, int position) { 
    holder.title.setText(mDataset.get(position).getMtitle()); 
    holder.ET_hint.setHint(mDataset.get(position).getMhint()); 
} 



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

public interface MyClickListener { 
    public void onItemClick(int position, View v); 
} 

public class classic_conversion extends AppCompatActivity { 

private RecyclerView mRecyclerView; 
private RecyclerView.Adapter mAdapter; 
private RecyclerView.LayoutManager mLayoutManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.classic_conversion_layout); 

    mRecyclerView = findViewById(R.id.my_recycler_view); 
    mRecyclerView.setHasFixedSize(true); 
    mLayoutManager = new LinearLayoutManager(this); 
    mRecyclerView.setLayoutManager(mLayoutManager); 
    mAdapter = new MyRecyclerViewAdapter(getDataSet()); 
    mRecyclerView.setAdapter(mAdapter); 
} 
private ArrayList<unitObject> getDataSet() { 
    ArrayList results = new ArrayList<unitObject>(); 
    results.add(new unitObject("Title 1","hint 1")); 
    results.add(new unitObject("Title 2","hint 2")); 
    results.add(new unitObject("Title 3","hint 3")); 
    return results; 
} 
} 

提前致谢!

+0

您是不是想了解更多EditText? Eusóvejo itens de texto,mas nada paraarmazená-los。 Título做TextView; TextView ET_hint; –

+0

在布局中添加editText。但我不知道如何在代码中添加editText监听器。谢谢你的回复 – Damien

回答

1

对于听者EDITTEXT:

yourEditText.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
      //BEFORE TEXT CHANGED 
     } 

     @Override 
     public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
     // WHILE TEXT IS CHANGE 
     } 

     @Override 
     public void afterTextChanged(Editable editable) { 
      //AFTER TEXT CHANGED (LIKE YOU PRESS ENTER AFTER TYPING) 

     } 
    }); 

对于听者焦点变化。

yourEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View view, boolean hasFocus) { 

      if (hasFocus){ 
       //DO WHAT YOU NEED WHEN editText HAS FOCUS 
      } 
      else { 
       //DO WHAT YOU NEED WHEN editText HAS NO FOCUS 
      } 

     } 
    }); 

我真的希望这对你有帮助,对于迟到的回复感到抱歉。

+0

谢谢你的回复。我知道听众是你写的。但我不知道我要把它们放在哪里。因为我有一个适配器,并且我想知道在我的主要活动中文本更改 – Damien

+0

里面@Override public void onBindViewHolder(DataObjectHolder holder,int position){0} { )); holder.ET_hint.setHint(mDataset.get(position).getMhint()); } –

+0

好的,谢谢!当editText文本更改时,我需要在主Activity中具有editText的值。我必须使用界面吗?谢谢 – Damien