如何在编辑文本中显示自定义列表视图记录
问题描述:
我已经创建了具有两个文本视图和一个编辑文本的自定义列表视图,并且在自定义列表视图下有一个编辑文本(textPostalAddress),我想要做的是当用户在自定义列表视图的编辑文本中输入值时,我希望将该记录添加到列表视图下方的编辑文本中,当用户再次输入该值时,该值也会在编辑文本中显示与以前的值。如何在编辑文本中显示自定义列表视图记录
public class MainActivity extends Activity {
ArrayList<Candy> myArrList;
EditText text;
EditText et;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myArrList = new ArrayList<Candy>();
ListView lisView1 = (ListView)findViewById(R.id.listView1);
et=(EditText)findViewById(R.id.editText1);
myArrList.add(new Candy("Butterscotch", "10"));
myArrList.add(new Candy("Birthday Cake", "100"));
myArrList.add(new Candy("Black Crunch", "102"));
myArrList.add(new Candy("Industrial Chocolate", "200"));
myArrList.add(new Candy("Coffee Molasses Chip", "500"));
lisView1.setAdapter(new CountryAdapter(this));}
public class CountryAdapter extends BaseAdapter
{
private Context context;
public CountryAdapter(Context c)
{
context = c;
}
public int getCount() {
// TODO Auto-generated method stub
return myArrList.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = inflater.inflate(R.layout.activity_mmnue, null);
}
// ColID
TextView txtID = (TextView) convertView.findViewById(R.id.nm);
txtID.setText(myArrList.get(position).getName() +".");
// ColCode
TextView txtCode = (TextView) convertView.findViewById(R.id.rat);
txtCode.setText(myArrList.get(position).getRate());
text = (EditText)convertView.findViewById(R.id.txtInput);
text.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count){}
public void beforeTextChanged(CharSequence s, int start, int count,int after){}
public void afterTextChanged(Editable s)
{
String rk=myArrList.get(position).getName()+","+s+","+myArrList.get (position).getRate();
et.setText(rk);
Toast.makeText(getApplicationContext(), "hello"+s+""+myArrList.get
(position).getName()+""+myArrList.get(position).getRate(), 50).show();
}
});
return convertView;}}
答
从edittext中获取记录并将其添加到数组列表中。然后调用lisView1.invalidate();在列表视图中更新该记录
答
EditText
难以用作每个ListView
行中的项目。在我的脑海里一个解决方案,你应该使用Button
的项目,而不是EditText
,并通过点击此按钮打开一个AlertDialog
含EditText
,输入的EditText按价值确定,并追加其在Edittext
外面的listview
例如在适配器的getView
方法做类似如下:
Button btn = (Button)convertView.findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
showAlertDialog();
}
});
private void showAlertDialog()
{
AlertDialog.Builder builder = new AlertDialog.Builder(context);
EditText input = new EditText(context);
builder.setTitle("Enter any value");
builder.setView(input);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
et.append(input.getText().toString()+" ");
}
});
dialog.show();
}
请阅读我的问题妥善.. – Ravi 2014-09-24 07:14:17
我想显示自定义列表的记录编辑文本是下面的列表视图,我不想更新我的列表视图。 – Ravi 2014-09-24 07:15:56
in onTextChanged'text'的监听器add et.append(s.toString) – NIPHIN 2014-09-24 07:28:05